CN117215989A - 一种异构加速设备、系统、方法、装置及存储介质 - Google Patents
一种异构加速设备、系统、方法、装置及存储介质 Download PDFInfo
- Publication number
- CN117215989A CN117215989A CN202311472172.4A CN202311472172A CN117215989A CN 117215989 A CN117215989 A CN 117215989A CN 202311472172 A CN202311472172 A CN 202311472172A CN 117215989 A CN117215989 A CN 117215989A
- Authority
- CN
- China
- Prior art keywords
- data
- acceleration
- fpga
- module
- application
- 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.)
- Granted
Links
- 230000001133 acceleration Effects 0.000 title claims abstract description 412
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000005540 biological transmission Effects 0.000 claims abstract description 39
- 238000004891 communication Methods 0.000 claims description 239
- 238000012545 processing Methods 0.000 claims description 32
- 230000006870 function Effects 0.000 claims description 25
- 238000013507 mapping Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 19
- 238000013480 data collection Methods 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 2
- 101150043088 DMA1 gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Advance Control (AREA)
Abstract
本发明公开一种异构加速设备、系统、方法、装置及存储介质,涉及硬件加速技术领域。异构加速设备包括:第一FPGA,至少一个第二FPGA;第一FPGA通过PCIe总线与上位机连接,用于接收上位机发送的第一数据,并将第二数据返回至上位机;第一FPGA通过高速传输设备与至少一个第二FPGA连接,用于向第二FPGA传输相应的第一数据单元,并接收第二FPGA返回的第二数据单元。通过实施本发明实施例提供的技术方案,通过一个硬件接口可扩展多个硬件加速设备,降低硬件接口数量、满足硬件加速资源供给;使各个硬件加速设备充分容纳数据加速应用;避免硬件加速设备的数据传输发生拥堵,提高数据传输效率。
Description
技术领域
本发明涉及硬件加速技术领域,特别涉及一种异构加速设备、系统、方法、装置及存储介质。
背景技术
随着计算机技术的发展,其处理数据的能力不断增强,能够快速应对大数据量,诸如高清图像,高码率音、视频数据的需求。该处理方式通常需要借助FPGA(FieldProgrammable Gate Array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,专用集成电路)等高晶体管效率设备进行硬件加速,以提高数据处理效率,并减轻CPU(Central Processing Unit,中央处理器)的工作量。但是,由于计算机接口数量的限制,将多个硬件加速设备同时与CPU进行物理连接是不现实。而单个硬件加速设备的资源难以应对同时对多个应用进行数据加速的需求,尤其是对于服务器这种需要同时处理大量数据的应用场合,反而限制了硬件加速的数据处理效率。
发明内容
由于计算机硬件接口的数量限制,不能无限地扩展硬件加速设备与处理器物理连接;同时,硬件加速应用又受限于单个硬件加速设备自身的资源。为了解决同时对多个应用进行硬件加速的需求与加速设备接口数量,以及单个加速设备资源有限的矛盾。本发明基于PCIe(Peripheral Component Interconnect Express,高速串行计算机扩展总线标准),以及I/O虚拟化技术对硬件加速设备进行扩展,以满足在计算机物理接口有限的情况下,同时对多个应用进行硬件加速的需求。本发明采用的技术方案如下:
第一方面,提供一种异构加速设备,包括:第一FPGA,至少一个第二FPGA;
第一FPGA通过PCIe总线与上位机连接,用于接收上位机发送的第一数据,并将第二数据返回至上位机;其中,第一数据为需要异构加速设备进行加速的数据,第二数据为经异构加速设备加速后获得的数据;
第一FPGA通过高速传输设备与至少一个第二FPGA连接,用于向至少一个第二FPGA中的一个或多个第二FPGA传输相应的第一数据单元,并接收至少一个第二FPGA中的一个或多个第二FPGA返回的第二数据单元;其中,至少一个第二FPGA中的任一第二FPGA具有至少一个加速应用,第一数据单元由第一数据拆分后获得,加速应用所处理的数据类型与第一数据单元的数据类型相对应,第二数据单元为相应的加速应用对第一数据单元经过异构加速后获得的数据单元,第二数据由第二数据单元合并后获得。
进一步地,响应于异构加速设备开启虚拟化加速功能,异构加速设备中的第一FPGA被配置为,包括:PCIe硬核,虚拟设备读写管理模块,至少一个第一通信模块;
异构加速设备中的第二FPGA被配置为,包括:第二通信模块,第二直接存储器访问控制模块,至少一个虚拟加速应用;
虚拟设备读写管理模块从PCIe硬核获取第一数据;根据第一数据中的通信标识,将第一数据拆分为相应的第一数据单元,并将第一数据单元发送至相应的第一通信模块;
从第一通信模块获取相应的第二数据单元;并将第二数据单元合并为相应的第二数据传输至上位机;
至少一个第一通信模块中的每个第一通信模块与至少一个第二通信模块进行数据传输,第一通信模块根据通信标识将第一数据单元发送至相应的第二通信模块;
第二直接存储器访问控制模块从第二通信模块获取第一数据单元;根据第一数据单元中的应用标识,将第一数据单元发送至相应的虚拟加速应用;接收虚拟加速应用返回的第二数据单元,并将第二数据单元传输至相应的第二通信模块。
进一步地,虚拟设备读写管理模块包括:读取拆分子模块和合并写回子模块;
读取拆分子模块根据第一数据中的通信标识,将第一数据拆分为相应的第一数据单元,并将第一数据单元发送至相应的第一通信模块;
合并写回子模块将第二数据单元合并为相应的第二数据传输至上位机。
进一步地,虚拟设备读写管理模块还包括映射表;
映射表包括通信标识与至少一个第一通信模块的对应关系;根据映射表,第一数据单元被传输至相应的第一通信模块。
进一步地,第一FPGA还包括先入先出存储器;
先入先出存储器设置于虚拟设备读写管理模块与每个第一通信模块的数据链路之间,用于缓存第一数据单元。
进一步地,第一FPGA还包括物理数据传输模块,第一直接存储访问控制模块,物理应用模块,物理管理模块;
第一直接存储访问控制模块通过物理数据传输模块,从PCIe硬核获取相应的第一数据,并将第一数据发送至物理应用模块进行物理加速,获得相应的第二数据;获取第二数据,通过物理数据传输模块将第二数据传输至PCIe硬核;
物理管理模块用于监控异构加速设备的状态参数,状态参数包括:温度、功耗、电压。
进一步地,响应于异构加速设备关闭虚拟化加速功能,异构加速设备中的第一FPGA被配置为,包括:PCIe硬核,第三直接存储器访问控制模块,存储控制器,存储读写管理模块,至少一个第三通信模块;
异构加速设备中的第二FPGA被配置为,包括:第四通信模块,至少一个物理加速应用;
第三直接存储器访问控制模块从PCIe硬核获取第一数据,将第一数据传输至存储控制器;从存储控制器获取第二数据,将第二数据传输至PCIe硬核;
存储读写管理模块从存储控制器获取第一数据;根据第一数据中的通信标识,将第一数据拆分为相应的第一数据单元,并将第一数据单元发送至相应的第三通信模块;
从第三通信模块获取第二数据单元,将第二数据单元合并为相应的第二数据传输至存储控制器;
至少一个第三通信模块中的每个第一通信模块与一个对应的第四通信模块中进行数据传输,第三通信模块根据通信标识将第一数据单元发送至相应的第四通信模块;
第四通信模块将第一数据单元发送至相应的物理加速应用;接收物理加速应用返回的第二数据单元,并将第二数据单元传输至相应的第三通信模块。
进一步地,响应于第二FPGA包括一个物理加速应用,第四通信模块与物理加速应用通信连接;
第四通信模块向物理加速应用发送第一数据单元,并从物理加速应用接收第二数据单元。
进一步地,响应于第二FPGA包括多个数据加速应用,第二FPGA还包括拆分合并管理模块,拆分合并管理模块从第四通信模块获取第一数据单元,根据第一数据单元的应用标识,将第一数据单元分发至相应的物理加速应用;从物理加速应用获取第二数据单元,并将第二数据单元传输至第四通信模块。
进一步地,存储读写管理模块包括:读出拆分子模块、合并写入子模块;
读出拆分子模块,从存储控制器获取第一数据;根据第一数据中的通信标识,将第一数据拆分为相应的第一数据单元,并将第一数据单元发送至相应的第三通信模块;
合并写入子模块,从第三通信模块获取第二数据单元,将第二数据单元合并为相应的第二数据传输至存储控制器。
进一步地,第一FPGA还包括数据加速应用;
数据加速应用从读出拆分子模块获取第一数据单元,对第一数据单元进行异构加速,并将相应的第二数据单元传输至合并写入子模块。
第二方面,提供一种异构加速系统,包括上位机以及第一方面记载的异构加速设备;
上位机包括:应用驱动模块、应用接口模块;
应用驱动模块,用于配置虚拟加速应用、物理加速应用、数据加速应用的寄存器,通过应用接口模块控制虚拟加速应用、物理加速应用、数据加速应用。
第三方面,提供一种异构加速方法,应用于第二方面所记载异构加速系统中的第一FPGA,包括:
从上位机获取第一数据,其中,第一数据为需要异构加速设备进行加速的数据;
根据第一数据的通信标识将第一数据拆分为第一数据单元,将第一数据单元传输至相应的第二FPGA;
从至少一个第二FPGA中的一个或多个第二FPGA获取第二数据单元,其中,第二数据单元为第一数据单元经相应的数据加速应用处理后得到的结果;
将第二数据单元合并为第二数据,返回至上位机。
进一步地,将第一数据单元传输至相应的第二FPGA,包括:
在映射表中查询与第一数据单元的通信标识相对应的第一通信模块,其中,通信标识包括与第一数据单元相对应的第一通信模块;
获取与第一通信模块相对应的第二FPGA的资源使用率;
将第一数据单元发送至资源使用率最低的第二FPGA。
进一步地,第一数据单元通过先入先出存储器缓存后,发送至相应的第一通信模块;
第二数据单元通过先入先出存储器缓存后,发送至虚拟设备读写管理模块。
进一步地,将第二数据单元合并为第二数据包括:
根据第二数据单元的业务优先级,优先合并业务优先级高的第二数据单元。
第四方面,提供一种异构加速方法,应用于第二方面所记载异构加速系统中的第二FPGA,包括:
获取第一FPGA发送的第一数据单元,其中,第一数据单元包括应用标识;
根据应用标识将第一数据单元分发至相应的虚拟加速应用进行加速处理,获得相应的第二数据单元,其中,第二数据单元为第一数据单元经相应的数据加速应用处理后得到的结果;
将第二数据单元通过对应的第二通信模块发送至第一FPGA。
第五方面,提供一种异构加速方法,应用于第二方面所记载异构加速系统中的上位机,包括:
启动驱动程序的单根输入/输出虚拟化功能,其中,驱动程序用于驱动第二FPGA中的虚拟加速应用;
开启并控制虚拟加速应用,将需要进行异构加速的数据作为第一数据存储于上位机的内存,以供第一FPGA获取第一数据;
获取第一FPGA返回的第二数据,其中,第二数据对应于第一数据,通过以下方法获得:
根据应用标识将第一数据单元传输至相应的虚拟加速应用进行加速处理,获得相应的第二数据单元,将第二数据单元通过对应的第二通信模块发送至第一FPGA,由第二FPGA获取对应于第一数据单元的第二数据单元,将第二数据单元合并为第二数据。
进一步地,在启动驱动程序的单根输入/输出虚拟化功能之前,还包括:
响应于异构加速设备开启虚拟化加速功能,将异构加速设备中的第一FPGA被配置为,包括:PCIe硬核,虚拟设备读写管理模块,至少一个第一通信模块;
将异构加速设备中的第二FPGA被配置为,包括:第二通信模块,第二直接存储器访问控制模块,至少一个虚拟加速应用。
第六方面,提供一种异构加速装置,包括:
加速数据获取模块,用于从上位机获取第一数据,其中,第一数据为需要异构加速设备进行加速的数据;
数据拆分发送模块,用于根据第一数据的通信标识将第一数据拆分为第一数据单元,将第一数据单元传输至相应的第二FPGA;
数据收集模块,用于从至少一个第二FPGA中的一个或多个第二FPGA获取第二数据单元,其中,第二数据单元为第一数据单元经相应的数据加速应用处理后得到的结果;
数据合并模块,用于将第二数据单元合并为第二数据,返回至上位机。
第七方面,提供一种计算机可读存储介质,其上存储有异构加速执行程序,异构加速执行程序被处理器执行时,实现第三、第四、第五方面记载的异构加速方法。
第八方面,提供一种服务器,服务器运行异构加速执行程序时,实现第三、第四、第五方面记载的异构加速方法。
本发明实施例提供的技术方案带来的有益效果是:
1. 通过一个硬件接口可扩展出多个硬件加速设备,在降低硬件接口数量需求的同时满足硬件加速资源供给;
2. 充分利用硬件加速设备的硬件资源,使各个硬件加速设备充分容纳数据加速应用;
3. 避免硬件加速设备的数据传输发生拥堵,提高数据传输效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种异构加速设备示意图;
图2是本发明实施例提供的虚拟化异构加速设备模块配置示意图;
图3是本发明实施例提供的一种虚拟设备读写管理模块示意图;
图4是本发明实施例提供的一种第一FPGA模块示意图;
图5是本发明实施例提供的非虚拟化异构加速设备模块配置示意图;
图6是本发明实施例提供的应用于异构加速系统中的第一FPGA的异构加速方法示意图;
图7是本发明实施例提供的一种异构加速装置示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。说明书附图中的编号,仅表示对各个功能部件或模块的区分,不表示部件或模块之间的逻辑关系。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面,将参照附图详细描述根据本公开的各个实施例。需要注意的是,在附图中,将相同的附图标记赋予基本上具有相同或类似结构和功能的组成部分,并且将省略关于它们的重复描述。
针对现有技术中,受限于计算机硬件接口数量,处理器无法与大量的硬件加速资源进行物理连接,以及同时对多个应用的数据进行硬件加速的需求之间的矛盾。本发明基于PCIe,以及I/O虚拟化技术对硬件加速设备进行扩展,以满足在计算机物理接口有限的情况下,同时对多个应用进行硬件加速的需求。
在一些实施例中,一种异构加速设备,如图1所示,包括:第一FPGA,至少一个第二FPGA;
第一FPGA通过PCIe总线与上位机连接,用于接收上位机发送的第一数据,并将第二数据返回至上位机;其中,第一数据为需要异构加速设备进行加速的数据,第二数据为经异构加速设备加速后获得的数据;
第一FPGA通过高速传输设备与至少一个第二FPGA连接,用于向至少一个第二FPGA中的一个或多个第二FPGA传输相应的第一数据单元,并接收至少一个第二FPGA中的一个或多个第二FPGA返回的第二数据单元;其中,至少一个第二FPGA中的任一第二FPGA具有至少一个加速应用,第一数据单元由第一数据拆分后获得,加速应用所处理的数据类型与第一数据单元的数据类型相对应,第二数据单元为相应的加速应用对第一数据单元经过异构加速后获得的数据单元,第二数据由第二数据单元合并后获得。
硬件加速技术,是指在计算机中通过把计算量非常大的工作分配给专门的硬件来处理以减轻中央处理器的工作量之技术。常用的硬件加速设备包括:GPU(GraphicsProcessing Unit,图像处理器),FPGA(Field Programmable Gate Array,现场可编程门阵列),ASIC(Application Specific Integrated Circuit,专用集成电路)等。FPGA和ASIC芯片可以直接通过晶体管门电路实现算法,相比于GPU的指令系统,可以将算法直接建筑在物理结构之上,没有中间层次,晶体管效率高。在不考虑能耗的前提下,适合用于硬件加速。
FPGA具有现场可编程功能,能够根据程序指令重构器件连接,适用于虚拟化功能开启或关闭的切换。本申请不限定第一加速设备、第二加速设备的具体型号。
第一FPGA、第二FPGA可以设置于PCB(Printed Circuit Board,印刷电路板),PCB上设置有金手指连接器,实现第一FPGA与PCIe(peripheral component interconnectexpress,高速串行计算机扩展总线标准)总线的连接,PCIe总线还与上位机连接。藉由PCIe总线,实现硬件加速器与上位机之间的数据传输。
第一FPGA、第二FPGA之间通过高速传输设备连接。该高速传输设备的带宽比FPGA数据处理带宽大。优选地,高速传输设备为高速串行/解串器(SERDES)。
优选地,第二FPGA能够被配置为包括至少一个加速应用,其中的每个加速应用能够对相应数据类型的数据或数据单元进行硬件加速。根据需要加速应用可以被配置为虚拟加速应用或物理加速应用。对第一数据单元进行硬件加速,可由FPGA的物理加速应用进行加速得以实现,亦可以由经虚拟化后的FPGA虚拟加速应用进行加速得以实现。虚拟加速应用或物理加速应用可根据需要进行选择配置。
第一数据为需要异构加速设备进行加速的数据。由PCIe总线传输至第一FPGA的第一数据为大位宽串行数据,加速应用不能够直接处理大位宽数据。第一FPGA将第一数据拆分为若干个第一数据单元,并将所有第一数据单元发送至相应的加速应用所在的第二FPGA,由相应的加速应用进行加速。通过在第一数据单元中添加通信标识,可以将第一数据单元与相应的第二FPGA相对应,该第二FPGA中包含处理相应数据类型的加速应用。
第二FPGA将加速完成的第一数据单元作为第二数据单元,返回至第一FPGA,第一FPGA将第二数据单元重新合并为第二数据,其中,第二数据为大位宽串行数据,并通过PCIe总线发送至上位机,完成数据加速。
响应于异构加速设备开启虚拟化加速功能,如图2所示,异构加速设备中的第一FPGA被配置为,包括:PCIe硬核,虚拟设备读写管理模块,至少一个第一通信模块;
异构加速设备中的第二FPGA被配置为,包括:第二通信模块,第二直接存储器访问控制模块,至少一个虚拟加速应用;
虚拟设备读写管理模块从PCIe硬核获取第一数据;根据第一数据中的通信标识,将第一数据拆分为相应的第一数据单元,并将第一数据单元发送至相应的第一通信模块;
从第一通信模块获取相应的第二数据单元;并将第二数据单元合并为相应的第二数据传输至上位机;
至少一个第一通信模块中的每个第一通信模块与至少一个第二通信模块进行数据传输,第一通信模块根据通信标识将第一数据单元发送至相应的第二通信模块;
第二直接存储器访问控制模块从第二通信模块获取第一数据单元;根据第一数据单元中的应用标识,将第一数据单元发送至相应的虚拟加速应用;接收虚拟加速应用返回的第二数据单元,并将第二数据单元传输至相应的第二通信模块。
第一FPGA与第二FPGA之间的数据传输由第一通信模块以及第二通信模块配合完成。第一通信模块与第二通信模块之间通过SERDES连接。图2中第二FPGA0,第二FPGA1,第二FPGA2,第二FPGAm,第二FPGAn用于示意第二FPGA的编号。
优选地,第一通信模块、第二通信模块为MAC模块。MAC模块是FPGA自带的硬核模块,用于进行高速串并转化,以及数据链路上的编、解码。对于用户来说,该模块提供标准的AXI-Steam接口,用于数据传输。
虚拟设备读写管理模块,负责将片外存储设备(通常是DDR)或者片内存储设备(通常是RAM)中的数据读出。将大位宽串行数据转化为第一数据单元后,根据第一数据单元携带的通信标识,将第一数据单元发送至相应的第一通信模块。第一数据单元中还携带应用标识,以便第二FPGA根据应用标识将第一数据单元分配给对应的虚拟加速应用。
在第一数据中,通信标识是第一数据单元拆分的标志,同时也是将拆分后的第一数据单元传输至哪一个第二FPGA的标志。根据通信标识,将第一数据拆分为第一数据单元后,将第一数据单元按照通信标识逐个传输至第二FPGA,相应的第二FPGA中有处理相应第一数据单元的虚拟加速应用。该虚拟加速应用对相应的第一数据单元进行加速处理后得到相应的第二数据单元,第二数据单元通过相应的第二通信模块传输至相应的第一通信模块,第一FPGA接收到第二数据单元后,将第二数据单元合并为第二数据,传输至上位机。
具体地,如图3所示,虚拟设备读写管理模块包括:读取拆分子模块和合并写回子模块;
读取拆分子模块根据第一数据中的通信标识,将第一数据拆分为相应的第一数据单元,并将第一数据单元发送至相应的第一通信模块;
合并写回子模块将第二数据单元合并为相应的第二数据传输至上位机。
为了对虚拟化和非虚拟化状态下,分发第一数据单元、合并第二数据单元的模块加以区分,虚拟化状态下拆分第一数据的模块命名为:读取拆分子模块;虚拟化状态下合并第二数据单元的模块命名为:合并写回子模块;非虚拟化状态下拆分第一数据的模块命名为:读出拆分子模块;非虚拟化状态下冰冰第二数据单元的模块命名为:合并写入子模块。
虚拟设备读写管理模块对根据相关寄存器进行管理与操作,对于读数据,由读取拆分子模块执行,包括:读初始地址、读数据长度、读通信标识、读应用标识、读开始等;对于写数据,由合并写回子模块执行,包括:写初始地址、写数据长度、写通信标识、写应用标识、写开始等。
优选地,如图4所示,虚拟设备读写管理模块还包括映射表;
映射表包括通信标识与至少一个第一通信模块的对应关系;根据映射表,第一数据单元被传输至相应的第一通信模块。
映射表中保存有第一数据单元的数据类型,以及应当接收该第一数据单元的第一通信模块。处理该第一数据单元的虚拟加速应用在第二FPGA中,由于第二FPGA中的第二通信模块与第一FPGA中的第一通信模块存在一一对应的关系,确定接收第一数据单元的第一通信模块,就确定了处理该第一数据单元的第二FPGA。
异构加速设备包括至少一个第二FPGA,第二FPGA中设置有至少一个虚拟加速应用。对应于某一数据类型,可能存在多个第二FPGA具有处理该数据类型的虚拟加速应用那个。在此架构下,通过查询映射表,可以寻找空闲的能够处理相应数据类型的虚拟加速应用的第二FPGA,对相应数据类型的第一数据单元进行硬件加速。提高硬件加速的处理效率。
映射表的更新必须保证所有操作执行完毕并且暂停,否则会导致总线挂死。
优选地,如图4所示,第一FPGA还包括先入先出存储器;
先入先出存储器设置于虚拟设备读写管理模块与每个第一通信模块的数据链路之间,用于缓存第一数据单元。
通过在存储读写管理模块与第一通信模块的数据链路之间设置先入先出存储器(FIFO,First Input First Output),可以提高将第一数据单元从虚拟设备读写管理模块向相应第一通信模块传输的效率。由于第一数据单元的分发过程为依次发生:下一个第一数据单元是在前一个数据单元传输完成后发送,因此,在前一个第一数据单元传输过程发成拥堵时,下一个第一数据单元无法传输。通过先入先出存储器缓存第一数据单元,可以提高第一数据单元的分发效率,避免数据拥堵。对于第二数据单元的接收亦然,在此不再赘述。
可选地,如图4所示,第一FPGA还包括物理数据传输模块,第一直接存储访问控制模块(图4中表示为DMA1),物理应用模块,物理管理模块;
第一直接存储访问控制模块通过物理数据传输模块,从PCIe硬核获取相应的第一数据,并将第一数据发送至物理应用模块进行物理加速,获得相应的第二数据;获取第二数据,通过物理数据传输模块将第二数据传输至PCIe硬核;
物理管理模块用于监控异构加速设备的状态参数,状态参数包括:温度、功耗、电压。
第一加速设备还包括PCIe硬核模块;PCIe硬核模块支持单根输入/输出虚拟化特性,用于接收第一数据,返回第二数据。
对于FPGA来说,其PCIe硬核模块(Hard IP)必须支持单根输入/输出虚拟化(SR-IOV)特性,PCIe硬核无需打开单根输入/输出虚拟化选项,无需支持虚拟化,也就是说上位机只能看到一个物理设备,没有虚拟设备;在虚拟化下,PCIe硬核会给出通信标识,拆分第一数据时,根据通信标识拆分即可。在非虚拟化的情况下,需要软硬件协调配合,上位机在PCIe传输的数据包中加入私有标识,读取拆分子模块解析数据包,根据标识来判断进入哪个第一通信模块。反之,合并写回子模块无需根据标识判决如何合并。
第二加速设备还包括第二直接存储器访问控制模块;
第二直接存储器访问控制模块,用于根据数据类型,将第二通信模块获取的第一数据单元分配至相应的数据加速应用进行硬件加速;
并将硬件加速完成得到的第二数据单元返回至第二通信模块。
相应地,响应于异构加速设备开启虚拟化加速功能,上位机包括:应用驱动模块、应用接口模块;
应用驱动模块,用于配置相应数据加速应用的寄存器,通过应用接口模块控制数据加速应用。
由于虚拟加速应用不同,每个虚拟加速应用均有一一对应的上位机控制程序,控制程序保存于应用驱动模块,对相应数据加速应用的寄存器进行配置及数据处理。应用驱动模块中的主应用程序通过应用接口模块控制各个数据加速应用,同时控制直接存储器访问控制模块以及存储寄存器管理模块,进而控制数据的搬移以及第一FPGA与到第二FPGA间的数据调度。在第一FPGA资源盈余的情况下,亦可将数据调度至所述第一FPGA中的物理应用模块,无需经过第一通信模块。
响应于异构加速设备关闭虚拟化加速功能,如图5所示,异构加速设备中的第一FPGA被配置为,包括:PCIe硬核,第三直接存储器访问控制模块,存储控制器,存储读写管理模块,至少一个第三通信模块;
异构加速设备中的第二FPGA被配置为,包括:第四通信模块,至少一个物理加速应用;
第三直接存储器访问控制模块从PCIe硬核获取第一数据,将第一数据传输至存储控制器;从存储控制器获取第二数据,将第二数据传输至PCIe硬核;
存储读写管理模块从存储控制器获取第一数据;根据第一数据中的通信标识,将第一数据拆分为相应的第一数据单元,并将第一数据单元发送至相应的第三通信模块;
从第三通信模块获取第二数据单元,将第二数据单元合并为相应的第二数据传输至存储控制器;
至少一个第三通信模块中的每个第一通信模块与一个对应的第四通信模块中进行数据传输,第三通信模块根据通信标识将第一数据单元发送至相应的第四通信模块;
第四通信模块将第一数据单元发送至相应的物理加速应用;接收物理加速应用返回的第二数据单元,并将第二数据单元传输至相应的第三通信模块。
可选地,响应于第二FPGA包括一个物理加速应用,第四通信模块与物理加速应用通信连接;
第四通信模块向物理加速应用发送第一数据单元,并从物理加速应用接收第二数据单元。
可选地,响应于第二FPGA包括多个数据加速应用,第二FPGA还包括拆分合并管理模块,拆分合并管理模块从第四通信模块获取第一数据单元,根据第一数据单元的应用标识,将第一数据单元分发至相应的物理加速应用;从物理加速应用获取第二数据单元,并将第二数据单元传输至第四通信模块。
具体地,存储读写管理模块包括:读出拆分子模块、合并写入子模块;
读出拆分子模块,从存储控制器获取第一数据;根据第一数据中的通信标识,将第一数据拆分为相应的第一数据单元,并将第一数据单元发送至相应的第三通信模块;
合并写入子模块,从第三通信模块获取第二数据单元,将第二数据单元合并为相应的第二数据传输至存储控制器。
进一步地,第一FPGA还包括数据加速应用;
数据加速应用从读出拆分子模块获取第一数据单元,对第一数据单元进行异构加速,并将相应的第二数据单元传输至合并写入子模块。
第一FPGA还包括存储控制器,第一FPGA通过存储控制器将数据存储到作为片外存储设备的DDR(Double Data Rate SDRAM,双倍速率同步动态随机存储器)颗粒中,或者将数据存储到作为片内存储设备的RAM(Random Access Memory,随机存取存储器)中。
第一FPGA还包括:存储寄存器管理模块,用于管理寄存器与上位机BAR空间存在一一对应关系。
存储读写管理模块对根据相关寄存器进行管理与操作,对于读数据,由读取拆分子模块执行,包括:读初始地址、读数据长度、读通信标识、读应用标识、读开始等;对于写数据,由合并写回子模块执行,包括:写初始地址、写数据长度、写通信标识、写应用标识、写开始等。
第一FPGA还包括:应用寄存器管理模块,用于将上位机配置第二FPGA中数据加速应用的寄存器操作转化为自定义包协议,通过通信标识对应第二FPGA,通过应用标识,对应数据加速应用。自定义包分为寄存器读与寄存器写两种操作,其中寄存器写无需返回包,寄存器读取需要应用返回读数据,并且通过应用寄存器管理模块返回给上位机。
在另一些实施例中,一种异构加速系统,包括上位机以及第一方面记载的异构加速设备;
上位机包括:应用驱动模块、应用接口模块;
应用驱动模块,用于配置虚拟加速应用、物理加速应用、数据加速应用的寄存器,通过应用接口模块控制虚拟加速应用、物理加速应用、数据加速应用。
由于虚拟加速应用不同,每个虚拟加速应用均有一一对应的上位机控制程序,控制程序保存于应用驱动模块,对相应数据加速应用的寄存器进行配置及数据处理。应用驱动模块中的主应用程序通过应用接口模块控制各个数据加速应用,同时控制直接存储器访问控制模块以及存储寄存器管理模块,进而控制数据的搬移以及第一FPGA与到第二FPGA间的数据调度。在第一FPGA资源盈余的情况下,亦可将数据调度至所述第一FPGA中的物理应用模块,无需经过第一通信模块。
在另一些实施例中,如图6所示,一种异构加速方法应用于第二方面所记载异构加速系统中的第一FPGA,包括:
A100:从上位机获取第一数据,其中,第一数据为需要异构加速设备进行加速的数据;
A200:根据第一数据的通信标识将第一数据拆分为第一数据单元,将第一数据单元传输至相应的第二FPGA;
A300:从至少一个第二FPGA中的一个或多个第二FPGA获取第二数据单元,其中,第二数据单元为第一数据单元经相应的数据加速应用处理后得到的结果;
A400:将第二数据单元合并为第二数据,返回至上位机。
在另一些实施例中,将第一数据单元传输至相应的第二FPGA,包括:
A210:在映射表中查询与第一数据单元的通信标识相对应的第一通信模块,其中,通信标识包括与第一数据单元相对应的第一通信模块;
A220:获取与第一通信模块相对应的第二FPGA的资源使用率;
A230:将第一数据单元发送至资源使用率最低的第二FPGA。
优选地,第一数据单元通过先入先出存储器缓存后,发送至相应的第一通信模块;
第二数据单元通过先入先出存储器缓存后,发送至虚拟设备读写管理模块。
优选地,将第二数据单元合并为第二数据包括:
根据第二数据单元的业务优先级,优先合并业务优先级高的第二数据单元。
在另一些实施例中,一种异构加速方法,应用于第二方面所记载异构加速系统中的第二FPGA,包括:
B100:获取第一FPGA发送的第一数据单元,其中,第一数据单元包括应用标识;
B200:根据应用标识将第一数据单元分发至相应的虚拟加速应用进行加速处理,获得相应的第二数据单元,其中,第二数据单元为第一数据单元经相应的数据加速应用处理后得到的结果;
B300:将第二数据单元通过对应的第二通信模块发送至第一FPGA。
在另一些实施例中,一种异构加速方法,应用于第二方面所记载异构加速系统中的上位机,包括:
C100:启动驱动程序的单根输入/输出虚拟化功能,其中,驱动程序用于驱动第二FPGA中的虚拟加速应用;
C200:开启并控制虚拟加速应用,将需要进行异构加速的数据作为第一数据存储于上位机的内存,以供第一FPGA获取第一数据;
C300:获取第一FPGA返回的第二数据,其中,第二数据对应于第一数据,通过以下方法获得:
根据应用标识将第一数据单元传输至相应的虚拟加速应用进行加速处理,获得相应的第二数据单元,将第二数据单元通过对应的第二通信模块发送至第一FPGA,由第二FPGA获取对应于第一数据单元的第二数据单元,将第二数据单元合并为第二数据。
在启动驱动程序的单根输入/输出虚拟化功能之前,还包括:
S010:响应于异构加速设备开启虚拟化加速功能,将异构加速设备中的第一FPGA被配置为,包括:PCIe硬核,虚拟设备读写管理模块,至少一个第一通信模块;
S020:将异构加速设备中的第二FPGA被配置为,包括:第二通信模块,第二直接存储器访问控制模块,至少一个虚拟加速应用。
应该理解的是,虽然图6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在另一些实施例中,一种硬件加速装置,如图7所示,包括:
加速数据获取模块,用于从上位机获取第一数据,其中,第一数据为需要异构加速设备进行加速的数据;
数据拆分发送模块,用于根据第一数据的通信标识将第一数据拆分为第一数据单元,将第一数据单元传输至相应的第二FPGA;
数据收集模块,用于从至少一个第二FPGA中的一个或多个第二FPGA获取第二数据单元,其中,第二数据单元为第一数据单元经相应的数据加速应用处理后得到的结果;
数据合并模块,用于将第二数据单元合并为第二数据,返回至上位机。
关于硬件加速装置的具体限定可以参见上文中对于硬件加速方法的限定,在此不再赘述。上述硬件加速装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在另一些实施例中,一种计算机可读存储介质,其上存储有异构加速执行程序,异构加速执行程序被处理器执行时,实现第三、第四、第五方面记载的异构加速方法。异构加速方法在此不再赘述。
在另一些实施例中,一种服务器,服务器运行异构加速执行程序时,实现第三、第四、第五方面记载的异构加速方法。异构加速方法在此不再赘述。
通过实施本发明实施例公开的异构加速设备、系统、方法、装置及存储介质,能够通过一个硬件接口可扩展出多个硬件加速设备,在降低硬件接口数量需求的同时满足硬件加速资源供给;充分利用硬件加速设备的硬件资源,使各个硬件加速设备充分容纳数据加速应用;避免硬件加速设备的数据传输发生拥堵,提高数据传输效率。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
实施例一
下面结合图1,阐述一种异构加速设备,包括:
第一FPGA,至少一个第二FPGA;
第一FPGA通过PCIe总线与上位机连接,用于接收上位机发送的第一数据,并将第二数据返回至上位机;其中,第一数据为需要异构加速设备进行加速的数据,第二数据为经异构加速设备加速后获得的数据;
第一FPGA通过高速传输设备与至少一个第二FPGA连接,用于向至少一个第二FPGA中的一个或多个第二FPGA传输相应的第一数据单元,并接收至少一个第二FPGA中的一个或多个第二FPGA返回的第二数据单元;其中,至少一个第二FPGA中的任一第二FPGA具有至少一个加速应用,第一数据单元由第一数据拆分后获得,加速应用所处理的数据类型与第一数据单元的数据类型相对应,第二数据单元为相应的加速应用对第一数据单元经过异构加速后获得的数据单元,第二数据由第二数据单元合并后获得。
实施例二
在实施例一的基础上,响应于异构加速设备开启虚拟化加速功能,异构加速设备中的第一FPGA被配置为,包括:PCIe硬核,虚拟设备读写管理模块,至少一个第一通信模块;
异构加速设备中的第二FPGA被配置为,包括:第二通信模块,第二直接存储器访问控制模块,至少一个虚拟加速应用;
虚拟设备读写管理模块从PCIe硬核获取第一数据;根据第一数据中的通信标识,将第一数据拆分为相应的第一数据单元,并将第一数据单元发送至相应的第一通信模块;
从第一通信模块获取相应的第二数据单元;并将第二数据单元合并为相应的第二数据传输至上位机;
至少一个第一通信模块中的每个第一通信模块与至少一个第二通信模块进行数据传输,第一通信模块根据通信标识将第一数据单元发送至相应的第二通信模块;
第二直接存储器访问控制模块从第二通信模块获取第一数据单元;根据第一数据单元中的应用标识,将第一数据单元发送至相应的虚拟加速应用;接收虚拟加速应用返回的第二数据单元,并将第二数据单元传输至相应的第二通信模块。
具体地,虚拟设备读写管理模块包括:读取拆分子模块和合并写回子模块;
读取拆分子模块根据第一数据中的通信标识,将第一数据拆分为相应的第一数据单元,并将第一数据单元发送至相应的第一通信模块;
合并写回子模块将第二数据单元合并为相应的第二数据传输至上位机。
优选地,虚拟设备读写管理模块还包括映射表;
映射表包括通信标识与至少一个第一通信模块的对应关系;根据映射表,第一数据单元被传输至相应的第一通信模块。
优选地,第一FPGA还包括先入先出存储器;
先入先出存储器设置于虚拟设备读写管理模块与每个第一通信模块的数据链路之间,用于缓存第一数据单元。
可选地,第一FPGA还包括物理数据传输模块,第一直接存储访问控制模块,物理应用模块,物理管理模块;
第一直接存储访问控制模块通过物理数据传输模块,从PCIe硬核获取相应的第一数据,并将第一数据发送至物理应用模块进行物理加速,获得相应的第二数据;获取第二数据,通过物理数据传输模块将第二数据传输至PCIe硬核;
物理管理模块用于监控异构加速设备的状态参数,状态参数包括:温度、功耗、电压。
响应于异构加速设备关闭虚拟化加速功能,异构加速设备中的第一FPGA被配置为,包括:PCIe硬核,第三直接存储器访问控制模块,存储控制器,存储读写管理模块,至少一个第三通信模块;
异构加速设备中的第二FPGA被配置为,包括:第四通信模块,至少一个物理加速应用;
第三直接存储器访问控制模块从PCIe硬核获取第一数据,将第一数据传输至存储控制器;从存储控制器获取第二数据,将第二数据传输至PCIe硬核;
存储读写管理模块从存储控制器获取第一数据;根据第一数据中的通信标识,将第一数据拆分为相应的第一数据单元,并将第一数据单元发送至相应的第三通信模块;
从第三通信模块获取第二数据单元,将第二数据单元合并为相应的第二数据传输至存储控制器;
至少一个第三通信模块中的每个第一通信模块与一个对应的第四通信模块中进行数据传输,第三通信模块根据通信标识将第一数据单元发送至相应的第四通信模块;
第四通信模块将第一数据单元发送至相应的物理加速应用;接收物理加速应用返回的第二数据单元,并将第二数据单元传输至相应的第三通信模块。
响应于第二FPGA包括一个物理加速应用,第四通信模块与物理加速应用通信连接;
第四通信模块向物理加速应用发送第一数据单元,并从物理加速应用接收第二数据单元。
响应于第二FPGA包括多个数据加速应用,第二FPGA还包括拆分合并管理模块,拆分合并管理模块从第四通信模块获取第一数据单元,根据第一数据单元的应用标识,将第一数据单元分发至相应的物理加速应用;从物理加速应用获取第二数据单元,并将第二数据单元传输至第四通信模块。
具体地,存储读写管理模块包括:读出拆分子模块、合并写入子模块;
读出拆分子模块,从存储控制器获取第一数据;根据第一数据中的通信标识,将第一数据拆分为相应的第一数据单元,并将第一数据单元发送至相应的第三通信模块;
合并写入子模块,从第三通信模块获取第二数据单元,将第二数据单元合并为相应的第二数据传输至存储控制器。
可选地,第一FPGA还包括数据加速应用;
数据加速应用从读出拆分子模块获取第一数据单元,对第一数据单元进行异构加速,并将相应的第二数据单元传输至合并写入子模块。
实施例三
一种异构加速系统,包括上位机以及第一方面记载的异构加速设备;
上位机包括:应用驱动模块、应用接口模块;
应用驱动模块,用于配置虚拟加速应用、物理加速应用、数据加速应用的寄存器,通过应用接口模块控制虚拟加速应用、物理加速应用、数据加速应用。
实施例四
一种异构加速方法,应用于第二方面所记载异构加速系统中的第一FPGA,包括:
从上位机获取第一数据,其中,第一数据为需要异构加速设备进行加速的数据;
根据第一数据的通信标识将第一数据拆分为第一数据单元,将第一数据单元传输至相应的第二FPGA;
从至少一个第二FPGA中的一个或多个第二FPGA获取第二数据单元,其中,第二数据单元为第一数据单元经相应的数据加速应用处理后得到的结果;
将第二数据单元合并为第二数据,返回至上位机。
进一步地,将第一数据单元传输至相应的第二FPGA,包括:
在映射表中查询与第一数据单元的通信标识相对应的第一通信模块,其中,通信标识包括与第一数据单元相对应的第一通信模块;
获取与第一通信模块相对应的第二FPGA的资源使用率;
将第一数据单元发送至资源使用率最低的第二FPGA。
进一步地,第一数据单元通过先入先出存储器缓存后,发送至相应的第一通信模块;
第二数据单元通过先入先出存储器缓存后,发送至虚拟设备读写管理模块。
进一步地,将第二数据单元合并为第二数据包括:
根据第二数据单元的业务优先级,优先合并业务优先级高的第二数据单元。
实施例五
一种异构加速方法,应用于第二方面所记载异构加速系统中的第二FPGA,包括:
获取第一FPGA发送的第一数据单元,其中,第一数据单元包括应用标识;
根据应用标识将第一数据单元分发至相应的虚拟加速应用进行加速处理,获得相应的第二数据单元,其中,第二数据单元为第一数据单元经相应的数据加速应用处理后得到的结果;
将第二数据单元通过对应的第二通信模块发送至第一FPGA。
实施例六
一种异构加速方法,应用于第二方面所记载异构加速系统中的上位机,包括:
启动驱动程序的单根输入/输出虚拟化功能,其中,驱动程序用于驱动第二FPGA中的虚拟加速应用;
开启并控制虚拟加速应用,将需要进行异构加速的数据作为第一数据存储于上位机的内存,以供第一FPGA获取第一数据;
获取第一FPGA返回的第二数据,其中,第二数据对应于第一数据,通过以下方法获得:
根据应用标识将第一数据单元传输至相应的虚拟加速应用进行加速处理,获得相应的第二数据单元,将第二数据单元通过对应的第二通信模块发送至第一FPGA,由第二FPGA获取对应于第一数据单元的第二数据单元,将第二数据单元合并为第二数据。
进一步地,在启动驱动程序的单根输入/输出虚拟化功能之前,还包括:
响应于异构加速设备开启虚拟化加速功能,将异构加速设备中的第一FPGA被配置为,包括:PCIe硬核,虚拟设备读写管理模块,至少一个第一通信模块;
将异构加速设备中的第二FPGA被配置为,包括:第二通信模块,第二直接存储器访问控制模块,至少一个虚拟加速应用。
实施例七
一种异构加速装置,如图7所示,包括:
加速数据获取模块,用于从上位机获取第一数据,其中,第一数据为需要异构加速设备进行加速的数据;
数据拆分发送模块,用于根据第一数据的通信标识将第一数据拆分为第一数据单元,将第一数据单元传输至相应的第二FPGA;
数据收集模块,用于从至少一个第二FPGA中的一个或多个第二FPGA获取第二数据单元,其中,第二数据单元为第一数据单元经相应的数据加速应用处理后得到的结果;
数据合并模块,用于将第二数据单元合并为第二数据,返回至上位机。
实施例八
一种计算机可读存储介质,其上存储有异构加速执行程序,异构加速执行程序被处理器执行时,实现实施例四、五、六记载的异构加速方法。
实施例九
一种服务器,服务器运行异构加速执行程序时,实现实施例四、五、六记载的异构加速方法。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括装载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置从网络上被下载和安装,或者从存储器被安装,或者从ROM 被安装。在该计算机程序被外部处理器执行时,执行本申请的实施例的方法中限定的上述功能。
需要说明的是,本申请的实施例的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(Radio Frequency, 射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述服务器中所包含的;也可以是单独存在,而未装配入该服务器中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该服务器执行时,使得该服务器:响应于检测到终端的外设模式未激活时,获取终端上应用的帧率;在帧率满足息屏条件时,判断用户是否正在获取终端的屏幕信息;响应于判断结果为用户未获取终端的屏幕信息,控制屏幕进入立即暗淡模式。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的实施例的操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java,Smalltalk, C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本申请所提供的技术方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (22)
1.一种异构加速设备,其特征在于,包括:第一FPGA,至少一个第二FPGA;
所述第一FPGA通过PCIe总线与上位机连接,用于接收所述上位机发送的第一数据,并将第二数据返回至所述上位机;其中,所述第一数据为需要所述异构加速设备进行加速的数据,所述第二数据为经所述异构加速设备加速后获得的数据;
所述第一FPGA通过高速传输设备与所述至少一个第二FPGA连接,用于向所述至少一个第二FPGA中的一个或多个第二FPGA传输相应的第一数据单元,并接收所述至少一个第二FPGA中的一个或多个第二FPGA返回的第二数据单元;其中,所述至少一个第二FPGA中的任一第二FPGA具有至少一个加速应用,所述第一数据单元由所述第一数据拆分后获得,所述加速应用所处理的数据类型与所述第一数据单元的数据类型相对应,所述第二数据单元为相应的加速应用对所述第一数据单元经过异构加速后获得的数据单元,所述第二数据由所述第二数据单元合并后获得。
2.根据权利要求1所述的异构加速设备,其特征在于,响应于所述异构加速设备开启虚拟化加速功能,所述异构加速设备中的第一FPGA被配置为,包括:PCIe硬核,虚拟设备读写管理模块,至少一个第一通信模块;
所述异构加速设备中的第二FPGA被配置为,包括:第二通信模块,第二直接存储器访问控制模块,至少一个虚拟加速应用;
所述虚拟设备读写管理模块从所述PCIe硬核获取所述第一数据;根据所述第一数据中的通信标识,将所述第一数据拆分为相应的第一数据单元,并将所述第一数据单元发送至相应的第一通信模块;
从所述第一通信模块获取相应的第二数据单元;并将所述第二数据单元合并为相应的第二数据传输至上位机;
所述至少一个第一通信模块中的每个第一通信模块与至少一个第二通信模块进行数据传输,所述第一通信模块根据所述通信标识将所述第一数据单元发送至相应的第二通信模块;
所述第二直接存储器访问控制模块从所述第二通信模块获取所述第一数据单元;根据所述第一数据单元中的应用标识,将所述第一数据单元发送至相应的虚拟加速应用;接收虚拟加速应用返回的第二数据单元,并将所述第二数据单元传输至相应的第二通信模块。
3.根据权利要求2所述的异构加速设备,其特征在于,所述虚拟设备读写管理模块包括:读取拆分子模块和合并写回子模块;
所述读取拆分子模块根据所述第一数据中的通信标识,将所述第一数据拆分为相应的第一数据单元,并将所述第一数据单元发送至相应的第一通信模块;
所述合并写回子模块将所述第二数据单元合并为相应的第二数据传输至上位机。
4.根据权利要求2所述的异构加速设备,其特征在于,所述虚拟设备读写管理模块还包括映射表;
所述映射表包括所述通信标识与所述至少一个第一通信模块的对应关系;根据所述映射表,所述第一数据单元被传输至相应的第一通信模块。
5.根据权利要求2所述的异构加速设备,其特征在于,所述第一FPGA还包括先入先出存储器;
所述先入先出存储器设置于所述虚拟设备读写管理模块与每个第一通信模块的数据链路之间,用于缓存所述第一数据单元。
6.根据权利要求2所述的异构加速设备,其特征在于,所述第一FPGA还包括物理数据传输模块,第一直接存储访问控制模块,物理应用模块,物理管理模块;
所述第一直接存储访问控制模块通过所述物理数据传输模块,从所述PCIe硬核获取相应的第一数据,并将所述第一数据发送至所述物理应用模块进行物理加速,获得相应的第二数据;获取所述第二数据,通过所述物理数据传输模块将所述第二数据传输至PCIe硬核;
所述物理管理模块用于监控所述异构加速设备的状态参数,所述状态参数包括:温度、功耗、电压。
7.根据权利要求1所述的异构加速设备,其特征在于,响应于所述异构加速设备关闭虚拟化加速功能,所述异构加速设备中的第一FPGA被配置为,包括:PCIe硬核,第三直接存储器访问控制模块,存储控制器,存储读写管理模块,至少一个第三通信模块;
所述异构加速设备中的第二FPGA被配置为,包括:第四通信模块,至少一个物理加速应用;
所述第三直接存储器访问控制模块从所述PCIe硬核获取第一数据,将所述第一数据传输至所述存储控制器;从所述存储控制器获取第二数据,将所述第二数据传输至所述PCIe硬核;
所述存储读写管理模块从所述存储控制器获取所述第一数据;根据所述第一数据中的通信标识,将所述第一数据拆分为相应的第一数据单元,并将所述第一数据单元发送至相应的第三通信模块;
从所述第三通信模块获取所述第二数据单元,将所述第二数据单元合并为相应的第二数据传输至所述存储控制器;
所述至少一个第三通信模块中的每个第一通信模块与一个对应的第四通信模块中进行数据传输,所述第三通信模块根据所述通信标识将所述第一数据单元发送至相应的第四通信模块;
所述第四通信模块将所述第一数据单元发送至相应的物理加速应用;接收物理加速应用返回的第二数据单元,并将所述第二数据单元传输至相应的第三通信模块。
8.根据权利要求7所述的异构加速设备,其特征在于,
响应于所述第二FPGA包括一个物理加速应用,所述第四通信模块与所述物理加速应用通信连接;
所述第四通信模块向所述物理加速应用发送所述第一数据单元,并从所述物理加速应用接收所述第二数据单元。
9.根据权利要求7所述的异构加速设备,其特征在于,
响应于所述第二FPGA包括多个数据加速应用,所述第二FPGA还包括拆分合并管理模块,所述拆分合并管理模块从所述第四通信模块获取所述第一数据单元,根据第一数据单元的应用标识,将所述第一数据单元分发至相应的物理加速应用;从所述物理加速应用获取第二数据单元,并将所述第二数据单元传输至所述第四通信模块。
10.根据权利要求7所述的异构加速设备,其特征在于,所述存储读写管理模块包括:读出拆分子模块、合并写入子模块;
所述读出拆分子模块,从所述存储控制器获取所述第一数据;根据所述第一数据中的通信标识,将所述第一数据拆分为相应的第一数据单元,并将所述第一数据单元发送至相应的第三通信模块;
所述合并写入子模块,从所述第三通信模块获取所述第二数据单元,将所述第二数据单元合并为相应的第二数据传输至所述存储控制器。
11.根据权利要求7所述的异构加速设备,其特征在于,所述第一FPGA还包括数据加速应用;
所述数据加速应用从读出拆分子模块获取第一数据单元,对所述第一数据单元进行异构加速,并将相应的第二数据单元传输至合并写入子模块。
12.一种异构加速系统,其特征在于,所述系统包括上位机以及权利要求1-11任一项所述的异构加速设备;
所述上位机包括:应用驱动模块、应用接口模块;
所述应用驱动模块,用于配置虚拟加速应用、物理加速应用、数据加速应用的寄存器,通过所述应用接口模块控制所述虚拟加速应用、所述物理加速应用、所述数据加速应用。
13.一种异构加速方法,其特征在于,所述方法应用于权利要求12所述异构加速系统中的第一FPGA,包括:
从上位机获取第一数据,其中,所述第一数据为需要所述异构加速设备进行加速的数据;
根据所述第一数据的通信标识将所述第一数据拆分为第一数据单元,将所述第一数据单元传输至相应的第二FPGA;
从至少一个第二FPGA中的一个或多个第二FPGA获取第二数据单元,其中,所述第二数据单元为所述第一数据单元经相应的数据加速应用处理后得到的结果;
将所述第二数据单元合并为第二数据,返回至所述上位机。
14.根据权利要求13所述的异构加速方法,其特征在于,将所述第一数据单元传输至相应的第二FPGA,包括:
在映射表中查询与所述第一数据单元的通信标识相对应的第一通信模块,其中,所述通信标识包括与所述第一数据单元相对应的第一通信模块;
获取与所述第一通信模块相对应的第二FPGA的资源使用率;
将所述第一数据单元发送至资源使用率最低的第二FPGA。
15.根据权利要求13所述的异构加速方法,其特征在于,
所述第一数据单元通过先入先出存储器缓存后,发送至相应的第一通信模块;
所述第二数据单元通过所述先入先出存储器缓存后,发送至虚拟设备读写管理模块。
16.根据权利要求13所述的异构加速方法,其特征在于,所述将所述第二数据单元合并为第二数据包括:
根据所述第二数据单元的业务优先级,优先合并业务优先级高的所述第二数据单元。
17.一种异构加速方法,其特征在于,所述方法应用于权利要求12所述异构加速系统中的第二FPGA,包括:
获取所述第一FPGA发送的第一数据单元,其中,所述第一数据单元包括应用标识;
根据所述应用标识将所述第一数据单元分发至相应的虚拟加速应用进行加速处理,获得相应的第二数据单元,其中,所述第二数据单元为所述第一数据单元经相应的数据加速应用处理后得到的结果;
将所述第二数据单元通过对应的第二通信模块发送至所述第一FPGA。
18.一种异构加速方法,其特征在于,所述方法应用于权利要求12所述异构加速系统中的上位机,包括:
启动驱动程序的单根输入/输出虚拟化功能,其中,所述驱动程序用于驱动第二FPGA中的虚拟加速应用;
开启并控制所述虚拟加速应用,将需要进行异构加速的数据作为第一数据存储于所述上位机的内存,以供所述第一FPGA获取所述第一数据;
获取所述第一FPGA返回的第二数据,其中,所述第二数据对应于所述第一数据,通过以下方法获得:
根据所述应用标识将所述第一数据单元传输至相应的虚拟加速应用进行加速处理,获得相应的第二数据单元,将所述第二数据单元通过对应的第二通信模块发送至所述第一FPGA,由所述第二FPGA获取对应于第一数据单元的第二数据单元,将所述第二数据单元合并为第二数据。
19.根据权利要求18所述的异构加速方法,其特征在于,在所述启动驱动程序的单根输入/输出虚拟化功能之前,还包括:
响应于异构加速设备开启虚拟化加速功能,将异构加速设备中的第一FPGA被配置为,包括:PCIe硬核,虚拟设备读写管理模块,至少一个第一通信模块;
将异构加速设备中的第二FPGA被配置为,包括:第二通信模块,第二直接存储器访问控制模块,至少一个虚拟加速应用。
20.一种异构加速装置,其特征在于,包括:
加速数据获取模块,用于从上位机获取第一数据,其中,所述第一数据为需要所述异构加速设备进行加速的数据;
数据拆分发送模块,用于根据所述第一数据的通信标识将所述第一数据拆分为第一数据单元,将所述第一数据单元传输至相应的第二FPGA;
数据收集模块,用于从至少一个第二FPGA中的一个或多个第二FPGA获取第二数据单元,其中,所述第二数据单元为所述第一数据单元经相应的数据加速应用处理后得到的结果;
数据合并模块,用于将所述第二数据单元合并为第二数据,返回至所述上位机。
21.一种计算机可读存储介质,其特征在于,其上存储有异构加速执行程序,所述异构加速执行程序被处理器执行时,实现权利要求13-19任一项所述的异构加速方法。
22.一种服务器,其特征在于,所述服务器运行异构加速执行程序时,实现权利要求13-19任一项所述的异构加速方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311472172.4A CN117215989B (zh) | 2023-11-07 | 一种异构加速设备、系统、方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311472172.4A CN117215989B (zh) | 2023-11-07 | 一种异构加速设备、系统、方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117215989A true CN117215989A (zh) | 2023-12-12 |
CN117215989B CN117215989B (zh) | 2024-07-05 |
Family
ID=
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117687956A (zh) * | 2024-01-31 | 2024-03-12 | 苏州元脑智能科技有限公司 | 多加速卡异构服务器及资源链路重构方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150089495A1 (en) * | 2013-09-25 | 2015-03-26 | Arm Limited | Data processing systems |
US20190004847A1 (en) * | 2017-06-30 | 2019-01-03 | EMC IP Holding Company LLC | Communications between virtual dual control modules in virtual machine environment |
US20210097221A1 (en) * | 2019-09-29 | 2021-04-01 | Huazhong University Of Science And Technology | Optimization method for graph processing based on heterogeneous fpga data streams |
CN116501688A (zh) * | 2023-03-28 | 2023-07-28 | 山东浪潮科学研究院有限公司 | 异构加速系统的fpga虚拟链路调试系统及方法 |
CN116886751A (zh) * | 2023-09-04 | 2023-10-13 | 浪潮(北京)电子信息产业有限公司 | 一种异构设备的高速通信方法、装置和异构通信系统 |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150089495A1 (en) * | 2013-09-25 | 2015-03-26 | Arm Limited | Data processing systems |
US20190004847A1 (en) * | 2017-06-30 | 2019-01-03 | EMC IP Holding Company LLC | Communications between virtual dual control modules in virtual machine environment |
US20210097221A1 (en) * | 2019-09-29 | 2021-04-01 | Huazhong University Of Science And Technology | Optimization method for graph processing based on heterogeneous fpga data streams |
CN116501688A (zh) * | 2023-03-28 | 2023-07-28 | 山东浪潮科学研究院有限公司 | 异构加速系统的fpga虚拟链路调试系统及方法 |
CN116886751A (zh) * | 2023-09-04 | 2023-10-13 | 浪潮(北京)电子信息产业有限公司 | 一种异构设备的高速通信方法、装置和异构通信系统 |
Non-Patent Citations (1)
Title |
---|
何为;彭涛;栾辉;张虎;: "基于PCIe总线的DMA控制器设计实现", 信息技术, no. 04, 25 April 2016 (2016-04-25) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117687956A (zh) * | 2024-01-31 | 2024-03-12 | 苏州元脑智能科技有限公司 | 多加速卡异构服务器及资源链路重构方法 |
CN117687956B (zh) * | 2024-01-31 | 2024-05-07 | 苏州元脑智能科技有限公司 | 多加速卡异构服务器及资源链路重构方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110347635B (zh) | 一种基于多层总线的异构多核微处理器 | |
US7996581B2 (en) | DMA engine | |
US20070180310A1 (en) | Multi-core architecture with hardware messaging | |
US11809360B2 (en) | Network-on-chip data processing method and device | |
US9678866B1 (en) | Transactional memory that supports put and get ring commands | |
CN110083461B (zh) | 一种基于fpga的多任务处理系统及方法 | |
US8972630B1 (en) | Transactional memory that supports a put with low priority ring command | |
CN104899085B (zh) | 一种数据处理方法和装置 | |
CN110297797B (zh) | 异构协议转换装置和方法 | |
US20120030421A1 (en) | Maintaining states for the request queue of a hardware accelerator | |
CN112272128B (zh) | Hinoc组帧方法、系统、介质、计算机设备及应用 | |
CN112189324B (zh) | 带宽匹配的调度器 | |
CN105472291A (zh) | 多处理器集群的数字硬盘录像机及其实现方法 | |
CN112749113A (zh) | 一种数据交互的方法、系统、设备及介质 | |
CN113114593A (zh) | 一种片上网络中双信道路由器及其路由方法 | |
CN113986969A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN117215989B (zh) | 一种异构加速设备、系统、方法、装置及存储介质 | |
US9342313B2 (en) | Transactional memory that supports a get from one of a set of rings command | |
CN106547707B (zh) | 阵列处理器中簇内存储并行访问局部优先交换电路 | |
US20230153153A1 (en) | Task processing method and apparatus | |
CN117215989A (zh) | 一种异构加速设备、系统、方法、装置及存储介质 | |
CN112416855B (zh) | 一种基于树状片上网络的数据采集处理片上系统 | |
CN114661409A (zh) | 处理数据分组以进行逻辑和虚拟交换机加速的方法和设备 | |
CN115756296A (zh) | 缓存管理方法和装置、控制程序及控制器 | |
CN103036815B (zh) | 一种信息技术和通信技术ict融合系统 |
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 |