CN117493236A - Fpga加速器以及加速器系统 - Google Patents
Fpga加速器以及加速器系统 Download PDFInfo
- Publication number
- CN117493236A CN117493236A CN202311839050.4A CN202311839050A CN117493236A CN 117493236 A CN117493236 A CN 117493236A CN 202311839050 A CN202311839050 A CN 202311839050A CN 117493236 A CN117493236 A CN 117493236A
- Authority
- CN
- China
- Prior art keywords
- module
- queue
- kernel
- virtual
- virtualization
- 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
- 238000012545 processing Methods 0.000 claims description 98
- 238000013507 mapping Methods 0.000 claims description 89
- 238000006243 chemical reaction Methods 0.000 claims description 37
- 230000005540 biological transmission Effects 0.000 claims description 16
- UUTKICFRNVKFRG-WDSKDSINSA-N (4R)-3-[oxo-[(2S)-5-oxo-2-pyrrolidinyl]methyl]-4-thiazolidinecarboxylic acid Chemical compound OC(=O)[C@@H]1CSCN1C(=O)[C@H]1NC(=O)CC1 UUTKICFRNVKFRG-WDSKDSINSA-N 0.000 claims description 12
- 238000004458 analytical method Methods 0.000 claims description 5
- 238000005538 encapsulation Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 230000003139 buffering effect Effects 0.000 claims description 2
- 238000012544 monitoring process Methods 0.000 claims description 2
- 239000002699 waste material Substances 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000000034 method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/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
-
- 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- 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/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种FPGA加速器以及加速器系统,该FPGA加速器的外壳区中,通过底层模块与服务器中的主机系统连接,通过内核管理模块与内核区的多个内核程序连接,该底层模块支持SR‑IOV协议,可以提供PCIe桥接能力,队列虚拟化模块以及内核管理模块支持VirtIO规范,为内核程序提供专用的虚拟队列与主机程序进行通信与数据传输,主机系统中不同虚拟机或者不同容器可以同时调用不同的内核程序,在硬件FPGA加速器上实现了加速器资源的虚拟化,服务器上的不同虚拟机或不同容器可以同时绑定同一FPGA加速器中的不同资源,提高了FPGA加速器资源的利用率,避免了FPGA加速器资源浪费的问题。
Description
技术领域
本申请实施例涉及计算机技术领域,具体而言,涉及一种FPGA加速器以及加速器系统。
背景技术
在使用FPGA(Field Programmable Gate Array,现场可编程门阵列)实现的异构加速器中,一般将FPGA的设计分为外壳部分和动态内核部分。外壳部分实现host(主机)对FPGA加速器的基本管理功能和数据通道。动态内核部分实现用户定义的各种功能,一般为多个动态内核通过并联或串联的方式构成实现特定功能的系统。动态内核部分管理着板载的DDR内存接口,芯片内的高带宽存储器以及高速串行传输接口。所有的用户功能,系统都可以通过FPGA编程的方式通过动态内核实现,并在FPGA中动态切换,从而使基于FPGA的异构加速器具有强大的通用性和灵活性。虽然,FPGA可以实现多种强大的算力,但是目前的使用模式仍然是将FPGA加速器作为独立的设备资源在使用,实现FPGA内部计算资源的共享完全依靠软件提供的虚拟化服务完成,会带来CPU资源的消耗和FPGA算力的浪费。
发明内容
本申请实施例提供了一种FPGA加速器以及加速器系统,以至少解决相关技术中FPGA加速度不支持虚拟化功能,造成FPGA加速器的资源利用率低的问题。
根据本申请的一个实施例,提供了一种FPGA加速器,所述FPGA加速器包括外壳区和内核区,所述内核区包括多个内核程序,所述外壳区包括:支持SR-IOV(Single Root I/OVirtualization,)协议的底层模块,所述底层模块用于与服务器中的主机系统连接,所述底层模块用于将物理设备虚拟化为多个虚拟设备,在通过所述虚拟设备接收到所述主机系统发出的初始请求信息的情况下,将所述初始请求信息发出,所述初始请求信息包括请求访问所述内核程序的信息;队列虚拟化模块,与所述底层模块连接,所述队列虚拟化模块创建有多个支持VirtIO(半虚拟化 hypervisor 中位于设备之上的抽象层)规范的虚拟队列,所述队列虚拟化模块用于读取所述初始请求信息,根据预定映射关系将所述初始请求信息发送至多个所述虚拟队列中的第一虚拟队列中,所述预定映射关系至少表征所述虚拟队列、所述内核程序、所述虚拟设备以及编程接口之间的映射关系;内核管理模块,与所述队列虚拟化模块连接,并通过多个所述编程接口访问所述内核程序,所述内核管理模块用于从所述第一虚拟队列中读取所述初始请求信息,根据所述预定映射关系确定对应的所述编程接口为第一编程接口,根据所述第一编程接口的接口协议将所述初始请求信息转换为目标请求信息后发送给所述第一编程接口,以使得所述目标请求信息经过所述第一编程接口到达多个所述内核程序中的目标内核程序,所述第一编程接口为与所述第一虚拟队列对应的所述编程接口。
在一个示例性实施例中,所述队列虚拟化模块包括:队列管理模块,用于监控多个所述虚拟队列的队列状态,控制所述虚拟队列的输入以及输出,生成触发获取可用描述符的触发信息;描述符执行模块,与所述底层模块连接,所述描述符执行模块用于根据所述触发信息,从所述主机系统的可用描述符表中获取所述可用描述符;包调度模块,与所述队列管理模块连接,所述包调度模块用于接收所述描述符执行模块获取的所述可用描述符,从所述队列管理模块中获取多个所述虚拟队列的队列状态,根据所述预定映射关系以及多个所述虚拟队列的队列状态,从多个所述虚拟队列中确定所述第一虚拟队列,将所述第一虚拟队列的队列信息和所述可用描述符发出;第一发送处理模块,与所述包调度模块以及所述内核管理模块分别连接,所述第一发送处理模块用于接收所述可用描述符和所述第一虚拟队列的队列信息,根据所述可用描述符从所述可用描述符指向的缓冲区读取所述初始请求信息,并根据所述第一虚拟队列的队列信息将所述初始请求信息发送至所述第一虚拟队列。
在一个示例性实施例中,所述第一发送处理模块还用于将初始请求信息发送至所述第一虚拟队列之后,确定所述可用描述符为已用描述符并发出,所述队列虚拟化模块还包括:缓存模块,与所述描述符执行模块以及所述包调度模块分别连接,所述描述符执行模块用于将所述可用描述符缓存至所述缓存模块,所述包调度模块用于从所述缓存模块中读取所述可用描述符;队列更新模块,与所述第一发送处理模块以及所述队列管理模块分别连接,所述队列更新模块用于接收所述第一发送处理模块发送的所述已用描述符,将所述已用描述符发送给所述队列管理模块,以使得所述队列管理模块将所述已用描述符返回至所述主机系统。
在一个示例性实施例中,所述队列虚拟化模块还包括:描述符调度模块,与所述底层模块、所述队列管理模块以及所述描述符执行模块分别连接,所述描述符执行模块通过所述描述符调度模块从所述主机系统的所述可用描述符表中读取所述可用描述符,所述队列管理模块通过所述描述符调度模块返回所述已用描述符至所述主机系统。
在一个示例性实施例中,所述队列虚拟化模块还包括:第一接收处理模块,与所述内核管理模块、所述包调度模块以及所述队列更新模块分别连接,所述第一接收处理模块用于在从多个所述虚拟队列中的第二虚拟队列读取到反馈信息的情况下,从所述包调度模块中读取所述可用描述符,并根据所述可用描述符将所述反馈信息发送至所述可用描述符指向的缓冲区,所述反馈信息为所述内核管理模块对所述目标内核程序发送的初始反馈信息进行处理得到的,所述初始反馈信息为所述目标内核程序响应于所述目标请求信息生成的,所述第一接收处理模块还用于在将所述反馈信息发送至所述可用描述符指向的缓冲区之后,确定所述可用描述符为所述已用描述符,并将所述已用描述符发送至所述队列更新模块,以使得所述队列更新模块将所述已用描述符返回至所述主机系统;DMA(DirectMemory Access,一种高速的数据传输操作)读写复用模块,所述描述符执行模块、所述第一发送处理模块以及所述第一接收处理模块分别通过所述DMA读写复用模块与所述底层模块连接,所述DMA读写复用模块用于提供所述底层模块与所述描述符执行模块、所述第一发送处理模块以及所述第一接收处理模块之间的DMA读写接口。
在一个示例性实施例中,所述内核管理模块包括:解析模块,与所述队列虚拟化模块连接,所述解析模块用于从所述第一虚拟队列中读取所述初始请求信息,对所述初始请求信息进行解析,得到第一命令字,并将所述第一命令字以及所述第一虚拟队列的队列信息发出;多个第一转换模块,多个所述第一转换模块一一对应地与所述编程接口连接,所述第一转换模块用于根据对应的所述编程接口的所述接口协议,将所述第一命令字转换为所述接口协议可识别的信息;映射模块,与所述解析模块以及多个第一转换模块分别连接,所述映射模块存储有所述预定映射关系,所述映射模块用于接收所述第一命令字和所述第一虚拟队列的队列信息,根据所述第一虚拟队列的队列信息和所述预定映射关系,确定对应的所述编程接口为所述第一编程接口,并将所述第一命令字发送给所述第一编程接口对应的所述第一转换模块。
在一个示例性实施例中,所述第一转换模块还用于在通过多个所述编程接口中的第二编程接口接收到所述目标内核程序发送的初始反馈信息的情况下,将所述初始反馈信息转换为第二命令字,将所述第二命令字以及所述第二编程接口的接口信息发送给所述映射模块;所述映射模块还用于根据所述接口信息和所述预定映射关系,确定对应的所述虚拟队列为第二虚拟队列,并将所述第二命令字以及所述第二虚拟队列的队列信息发出;所述内核管理模块还包括:封装模块,与所述映射模块以及所述队列虚拟化模块分别连接,所述封装模块用于将所述第二命令字封装为对应的第二帧数据,并将所述第二帧数据以及对应的所述第二虚拟队列的队列信息发送至所述第二虚拟队列中。
在一个示例性实施例中,所述内核管理模块还包括:解耦模块,与所述映射模块以及所述底层模块分别连接,所述解耦模块用于通过所述底层模块接收所述主机系统发送的所述预定映射关系,并将所述预定映射关系发送给所述映射模块。
在一个示例性实施例中,多个所述编程接口包括AXIS接口、AXI4(AXI-Full)接口以及AXIL接口。
在一个示例性实施例中,所述底层模块包括:PCIe(Peripheral ComponentInterconnect Express,高速串行计算机扩展总线标准)硬核,所述PCIe硬核与所述主机系统连接,用于确定所述FPGA加速器中的物理设备,并通过所述SR-IOV协议将所述物理设备虚拟化为多个虚拟设备,还用于通过所述虚拟设备接收所述初始请求信息;第一扩展模块,与所述PCIe硬核以及所述队列虚拟化模块分别连接,所述第一扩展模块用于对所述物理设备进行扩展,所述第一扩展模块还用于将所述PCIe硬核发出的所述初始请求信息转发至所述队列虚拟化模块。
在一个示例性实施例中,所述底层模块还包括:桥接模块,所述第一扩展模块以及所述队列虚拟化模块通过所述桥接模块连接,所述桥接模块用于提供所述第一扩展模块和所述队列虚拟化模块之间的数据传输通道。
在一个示例性实施例中,所述桥接模块包括:第二接收处理模块,与所述第一扩展模块连接,所述第二接收处理模块用于在接收到所述初始请求信息的情况下,从所述初始请求信息中提取DMA读操作指令;读请求处理模块,与所述第二接收处理模块以及所述队列虚拟化模块分别连接,所述读请求处理模块用于提供将所述DMA读操作指令发送至所述队列虚拟化模块的DMA发送数据通道;第二发送处理模块,与所述第一扩展模块连接,所述第二发送处理模块用于接收DMA写操作指令,根据所述DMA写操作指令生成对应的第一TLP(Transaction Layer Packet,事务层数据报文)帧后发送至所述第一扩展模块,以使得所述第一TLP帧经过所述第一扩展模块以及所述PCIe硬核发送至所述主机系统;写请求处理模块,与所述队列虚拟化模块以及所述第二发送处理模块分别连接,所述写请求处理模块用于提供将队列虚拟化模块发送的所述DMA写操作指令发送至所述第二发送处理模块的DMA接收数据通道,其中,所述DMA写操作指令为所述内核程序经所述内核管理模块发送至所述队列虚拟化模块的写操作指令。
在一个示例性实施例中,所述桥接模块还包括:CC(Completer Completion,完成者完成)/CQ(Completer Request,完成者请求)通道TLP帧处理模块,与所述第一扩展模块连接,所述CC/CQ通道TLP帧处理模块用于提供将所述初始请求信息发出的桥发送数据通道;第二转换模块,与所述CC/CQ通道TLP帧处理模块、所述队列虚拟化模块以及所述内核管理模块分别连接,所述第二转换模块用于接收所述CC/CQ通道TLP帧处理模块发送的所述初始请求信息,根据所述编程接口的接口协议,将所述初始请求信息转换为所述编程接口可识别的预定指令并发送给所述队列虚拟化模块以及所述内核管理模块。
在一个示例性实施例中,所述第二转换模块还用于通过所述队列虚拟化模块或者所述内核管理模块接收所述内核程序发送的初始反馈信息,并采用所述编程接口的接口协议将所述初始反馈信息转换为所述编程接口可识别的第二TLP帧;所述CC/CQ通道TLP帧处理模块还用于提供将所述第二TLP帧发送至所述第一扩展模块的桥接收数据通道。
在一个示例性实施例中,所述桥接模块还包括:第二扩展模块,所述第二转换模块通过所述第二扩展模块与所述队列虚拟化模块以及所述内核管理模块连接,所述第二扩展模块用于对所述第二转换模块进行扩展。
在一个示例性实施例中,所述PCIe硬核还用于对所述物理设备以及所述虚拟设备进行读写访问操作,还用于对BAR空间进行以及读写访问接口进行配置。
在一个示例性实施例中,所述内核区还包括板载内存,所述初始请求信息还包括请求访问所述板载内存的信息,所述内核管理模块还通过多个所述编程接口中的部分访问所述板载内存。
根据本申请的另一个实施例,提供了一种加速器系统,包括:服务器,包括主机系统;至少一个任一种所述的FPGA加速器,与所述服务器连接,所述FPGA加速器包括内核区以及外壳区,所述内核区包括多个内核程序。
在一个示例性实施例中,所述FPGA加速器还包括硬件存储资源。
在一个示例性实施例中,所述内核区还包括内核程序互联模块,所述内核程序互联模块用于互联不同的所述内核程序。
通过本申请,面向FPGA内核虚拟化构建了一种兼容VirtIO规范的IP核,并将其放置在FPGA加速器的外壳区中,具体地,该IP核提供了依次连接的底层模块、队列虚拟化模块以及内核管理模块,通过底层模块与服务器中的主机系统连接,通过内核管理模块与内核区的多个内核程序连接,该底层模块支持SR-IOV协议,可以提供PCIe桥接能力,队列虚拟化模块以及内核管理模块支持VirtIO规范,为内核程序提供专用的虚拟队列与主机程序进行通信与数据传输,主机系统中不同虚拟机或者不同容器可以同时调用不同的内核程序,在硬件FPGA加速器上实现了加速器资源的虚拟化,服务器上的不同虚拟机或不同容器可以同时绑定同一FPGA加速器中的不同资源,提高了FPGA加速器资源的利用率,避免了由于FPGA加速度不支持虚拟化功能,造成FPGA加速器资源浪费的问题。
附图说明
图1是根据本申请实施例的FPGA的外壳区的结构示意图;
图2是根据本申请实施例的队列虚拟化模块的结构示意图;
图3是根据本申请实施例的内核管理模块的结构示意图;
图4是根据本申请实施例的桥接模块的结构示意图;
图5是根据本申请实施例的加速器系统的结构示意图。
其中,所述附图包括以下附图标记:
10、IP核;11、底层模块;110、PCIe硬核;111、第一扩展模块;112、桥接模块;1120、第二接收处理模块;1121、读请求处理模块;1122、第二发送处理模块;1123、写请求处理模块;1124、CC/CQ通道TLP帧处理模块;1125、第二转换模块;1126、第二扩展模块;12、队列虚拟化模块;120、队列管理模块;121、描述符执行模块;122、包调度模块;123、第一发送处理模块;124、缓存模块;125、队列更新模块;126、描述符调度模块;127、第一接收处理模块;128、DMA读写复用模块;13、内核管理模块;130、解析模块;131、第一转换模块;132、映射模块;133、封装模块;134、解耦模块;1321、第一映射子模块;1322、第二映射子模块;20、主机系统;30、FPGA加速器;31、内核区;32、外壳区;310、内核程序;311、板载内存;33、内存条;34、网络接口。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
在本实施例中提供了一种FPGA加速器,图1是根据本申请实施例的FPGA加速器的外壳区(shell)的部分结构框图,所述FPGA加速器包括外壳区和内核区(kernel),所述内核区31包括多个内核程序310,如图1所示,所述外壳区包括:
支持SR-IOV协议的底层模块11,所述底层模块11用于与服务器中的主机系统连接,所述底层模块11用于将物理设备(Physical Function,简称为PF)虚拟化为多个虚拟设备(Virtual Function,简称为VF),在通过所述虚拟设备接收到所述主机系统发出的初始请求信息的情况下,将所述初始请求信息发出,所述初始请求信息包括请求访问所述内核程序的信息;
具体地,所述物理设备为FPGA加速器中的支持PCIe总线标准的物理设备。
队列虚拟化模块12,与所述底层模块11连接,所述队列虚拟化模块12创建有多个支持VirtIO规范的虚拟队列(Virtqueue),所述队列虚拟化模块12用于读取所述初始请求信息,根据预定映射关系将所述初始请求信息发送至多个所述虚拟队列中的第一虚拟队列中,所述预定映射关系至少表征所述虚拟队列、所述内核程序、所述虚拟设备以及编程接口之间的映射关系;
具体地,所述预定映射关系还可以表征所述虚拟队列、所述内核程序、所述物理设备、所述虚拟设备以及所述编程接口之间的映射关系。一般情况下,一个所述物理设备或一个所述虚拟设备对应一个所述内核程序,一个所述内核程序对应多个所述虚拟队列,多个虚拟队列中的部分为执行写操作的虚拟队列,剩余部分的虚拟队列为执行读操作的虚拟队列。所述第一虚拟队列为所述预定映射关系中与接收所述初始请求信息的虚拟设备对应的所述虚拟队列。所述初始请求信息为数据帧结构。所述内核程序可以使用一种或多种所述的编程接口。
内核管理模块13,与所述队列虚拟化模块12连接,并通过多个所述编程接口访问所述内核程序310,所述内核管理模块13用于从所述第一虚拟队列中读取所述初始请求信息,根据所述预定映射关系确定对应的所述编程接口为第一编程接口,根据所述第一编程接口的接口协议将所述初始请求信息转换为目标请求信息后发送给所述第一编程接口,以使得所述目标请求信息经过所述第一编程接口到达多个所述内核程序中的目标内核程序,所述第一编程接口为与所述第一虚拟队列对应的所述编程接口。
具体地,所述内核管理模块也是基于VirtIO规范新扩展的功能模块,所述目标请求信息为所述第一编程接口可识别的信息。
所述实施例面向FPGA内核虚拟化构建了一种兼容VirtIO规范的知识产权核(IP核),并将其放置在FPGA加速器的外壳区中,具体地,该IP核提供了依次连接的底层模块、队列虚拟化模块以及内核管理模块,通过底层模块与服务器中的主机系统连接,通过内核管理模块与内核区的多个内核程序连接,该底层模块支持SR-IOV协议,可以提供PCIe桥接能力,队列虚拟化模块完全支持VirtIO规范,内核管理模块在VirtIO规范基础上进行扩展,为内核程序提供专用的虚拟队列与主机程序进行通信与数据传输,主机系统中不同虚拟机或者不同容器可以同时调用不同的内核程序,在硬件FPGA加速器上实现了加速器资源的虚拟化,服务器上的不同虚拟机或不同容器可以同时绑定同一FPGA加速器中的不同资源,提高了FPGA加速器资源的利用率,避免了由于FPGA加速度不支持虚拟化功能,造成FPGA加速器资源浪费的问题。
并且,由于多个虚拟队列的存在,不同虚拟机或不同容器可以通过不同的虚拟队列对同一FPGA加速器的内核程序进行访问,实现了对内核程序访问的相互隔离和保护。
此外,本申请为每个内核程序构造专用的多个虚拟队列,来支持内核程序与虚拟机或者容器进行通信和数据传输,实现了对管理通道、数据接口的支持,并可以通过增加分配给各个内核程序的虚拟队列的数量,来实现对大带宽传输速率的支持。
需要说明的是,FPGA加速器为一种可编程器件,按照本实施例对其实现编程后,其自身可支持虚拟化功能。具体的,外壳区可实现:服务器对FPGA加速器的基本管理功能和数据通道。基本的管理功能包括:管理内核区中各内核程序的下载、烧写Flash芯片、保存上电使用的shell版本、使管理权限的驱动和用户权限的驱动之间实现消息通信等。数据通道可实现:服务器与内核区中PCIe DMA的传输通道。内核区中各内核程序由用户自行定义其具体功能,通常情况下,多个内核程序以并联或串联的方式可构成特定计算功能,各内核程序的使用可由用户动态切换,因此FPGA加速器具有强大的通用性和灵活性。内核区还可以管理:板载的DDR(Double Data Rate,双倍速率同步动态随机存储器)接口、芯片内的高带宽存储器以及高速串行传输接口。
在一个示例性实施例中,如图2所示,所述队列虚拟化模块12包括:
队列管理模块120,用于监控多个所述虚拟队列的队列状态,控制所述虚拟队列的输入以及输出,生成触发获取可用描述符的触发信息;
具体地,所述队列管理模块控制用户数据在所述虚拟队列中的输入以及输出。所述队列状态包括的所述虚拟队列的数量、各所述虚拟队列的当前处理操作(即是读操作、写操作还是空闲状态)以及所述当前处理操作的处理进度(即读操作进度以及写操作进度等)。
描述符执行模块121,与所述底层模块连接,所述描述符执行模块121用于根据所述触发信息,从所述主机系统的可用描述符表中获取所述可用描述符;
具体地,所述可用描述符为所述主机系统提供的可以使用的描述符。所述主机系统的可用描述符表可以由一个flags字段、idx索引字段以及一个以数组形式实现的环组成。所述主机系统的处理器中存储有可用描述符表和已用描述符表。所述描述符中包括虚拟设备的IO物理地址、数据长度、标志位和描述符链中的下一个描述符的指针。所述已用描述符表的结构与所述可用描述符表类似。
包调度模块122,与所述队列管理模块120连接,所述包调度模块122用于接收所述描述符执行模块121获取的所述可用描述符,从所述队列管理模块中获取多个所述虚拟队列的队列状态,根据所述预定映射关系以及多个所述虚拟队列的队列状态,从多个所述虚拟队列中确定所述第一虚拟队列,将所述第一虚拟队列的队列信息和所述可用描述符发出;
具体地,所述第一虚拟队列为所述预定映射关系中,与发出所述初始请求信息的所述虚拟设备相同的虚拟设备对应的所述虚拟队列,一个所述虚拟设备对应多个所述虚拟队列,所述包调度模块根据所述预定映射关系,先确定所述初始请求信息对应的多个虚拟队列,再根据这些虚拟队列的队列状态,从多个虚拟队列中确定空闲的虚拟队列为所述第一虚拟队列。所述队列信息为所述第一虚拟队列区别于其他虚拟队列的身份标识信息,如唯一的名称、标号或者编码等。
第一发送处理模块123,与所述包调度模块122以及所述内核管理模块分别连接,所述第一发送处理模块123用于接收所述可用描述符和所述第一虚拟队列的队列信息,根据所述可用描述符从所述可用描述符指向的缓冲区读取所述初始请求信息,并根据所述第一虚拟队列的队列信息将所述初始请求信息发送至所述第一虚拟队列。
所述实施例通过所述描述符执行模块、包调度模块和第一发送处理模块提供了从主机系统向内核程序发送信息的通道,并且,通过描述符执行模块获取可用描述符后发送给包调度模块,通过包调度模块根据预定映射关系和从队列管理模块中获取的虚拟队列的队列状态,来确定第一虚拟队列,并将所述第一虚拟队列的队列信息和可用描述符发送给第一发送处理模块,通过第一发送处理模块根据该可用描述符读取初始请求信息,并将其发送给对应的第一虚拟队列,通过隔离的多个虚拟队列进一步地实现了对FPGA虚拟化资源的分配,使不同虚拟化资源被分配至内核区中的不同内核程序,那么不同虚拟机或不同容器便可同时调用不同内核程序,进一步地提高了FPGA加速器的资源利用率。
可选地,如图2所示,所述第一发送处理模块123还用于将初始请求信息发送至所述第一虚拟队列之后,确定所述可用描述符为已用描述符并发出,所述队列虚拟化模块还包括:
缓存模块124,与所述描述符执行模块121以及所述包调度模块122分别连接,所述描述符执行模块121用于将所述可用描述符缓存至所述缓存模块124,所述包调度模块122用于从所述缓存模块124中读取所述可用描述符;
具体地,所述已用描述符为描述符执行模块已经使用且尚未反馈给主机系统的描述符。
队列更新模块125,与所述第一发送处理模块123以及所述队列管理模块120分别连接,所述队列更新模块125用于接收所述第一发送处理模块123发送的所述已用描述符,并将所述已用描述符发送给所述队列管理模块120,以使得所述队列管理模块120将所述已用描述符返回至所述主机系统。
通过所述缓存模块来缓存所述描述符执行模块预读的可用描述符,提高了整个队列虚拟化模块的响应速度和并发量;通过所述队列更新模块,根据当前主机系统对内核程序的访问情况将已用描述符归还给主机系统,实现了已用描述符的同步。
根据本申请的另一些示例性实施例,如图2所示,所述队列虚拟化模块还包括:
描述符调度模块126,与所述底层模块、所述队列管理模块120以及所述描述符执行模块121分别连接,所述描述符执行模块121通过所述描述符调度模块126从所述主机系统的所述可用描述符表中获取所述可用描述符,所述队列管理模块120通过所述描述符调度模块126返回所述已用描述符至所述主机系统。
进一步地,如图2所示,所述队列虚拟化模块还包括:
第一接收处理模块127,与所述内核管理模块、所述包调度模块122以及所述队列更新模块125分别连接,所述第一接收处理模块127用于在从多个所述虚拟队列中的第二虚拟队列读取到反馈信息的情况下,从所述包调度模块122中读取所述可用描述符,并根据所述可用描述符将所述反馈信息发送至所述可用描述符指向的缓冲区,所述反馈信息为所述内核管理模块对所述目标内核程序发送的初始反馈信息进行处理得到的,所述初始反馈信息为所述目标内核程序响应于所述目标请求信息生成的,所述第一接收处理模块127还用于在将所述反馈信息发送至所述可用描述符指向的缓冲区之后,确定所述可用描述符为所述已用描述符,并将所述已用描述符发送至所述队列更新模块125,以使得所述队列更新模块125将所述已用描述符返回至所述主机系统。
具体地,所述第二虚拟队列为所述预定映射关系中与所述目标内核程序对应的虚拟队列,所述第二虚拟队列与所述第一虚拟队列不同;
DMA读写复用模块128,所述描述符执行模块121、所述第一发送处理模块123以及所述第一接收处理模块127分别通过所述DMA读写复用模块128与所述底层模块连接,所述DMA读写复用模块128用于提供所述底层模块与所述描述符执行模块121、所述第一发送处理模块123以及所述第一接收处理模块127之间的DMA读写接口;
也就是说,通过底层模块发送至队列虚拟化模块的DMA读写复用模块的数据为DMA数据,通过DMA读写复用模块反馈至底层模块的数据也是DMA数据。
具体地,所述第一发送处理模块123通过所述DMA读写复用模块128,从所述可用描述符指向的缓冲区读取得到所述初始请求信息。同样地,所述第一接收处理模块127通过所述DMA读写复用模块128,将所述反馈信息拷贝至所述可用描述符指向的缓冲区中。
此外,所述包调度模块122还用于将所述第一虚拟队列和所述第二虚拟队列发送至队列管理模块120,使得队列管理模块120根据所述第一虚拟队列和所述第二虚拟队列的使用情况更新所述虚拟队列的队列状态,来实现队列状态的实时同步。所述队列管理模块120还用于生成触发获取所述已用描述符的触发信息,并将该触发信息发送至队列更新模块125,来触发队列更新模块125将所述已用描述符发送给所述队列管理模块120,以使得所述队列管理模块120通过所述描述符调度模块126将这些已用描述符归还给主机系统。
又一些示例性实施例中,如图3所示,所述内核管理模块13包括:
解析模块130,与所述队列虚拟化模块连接,所述解析模块130用于从所述第一虚拟队列中读取所述初始请求信息,对所述初始请求信息进行解析,得到第一命令字,并将所述第一命令字以及所述第一虚拟队列的队列信息发出;
具体地,所述解析模块与所述队列虚拟化模块中的第一发送处理模块连接,两者共享虚拟队列。所述第一命令字为所述初始请求信息对应的命令字信息,所述命令字信息具体包括操作类型(读操作或者写操作)、虚拟设备的标识信息、物理设备的标识信息以及地址、读写操作的具体数据等相关参数。
多个第一转换模块131,多个所述第一转换模块131一一对应地与所述编程接口连接,所述第一转换模块131用于根据对应的所述编程接口的所述接口协议,将所述第一命令字转换为所述接口协议可识别的信息;
具体地,所述编程接口可以为任意形式的接口,一种具体实施例中,多个所述编程接口包括AXIS接口、AXI4接口以及AXIL接口。其中,AXIL接口用于内核程序参数的配置,管理内核程序的启动、终止和中断寄存器表。AXI4接口用于使用FPGA加速器中的板载内存,和内核程序实现间接的数据交互。AXIS接口用于内核程序和虚拟机或者容器之间的直接数据交互,适用于流传输模式的数据交互。
映射模块132,与所述解析模块130以及多个第一转换模块131分别连接,所述映射模块132存储有所述预定映射关系,所述映射模块132用于接收所述第一命令字和所述第一虚拟队列的队列信息,根据所述第一虚拟队列的队列信息和所述预定映射关系,确定对应的所述编程接口为所述第一编程接口,并将所述第一命令字发送给所述第一编程接口对应的所述第一转换模块131。
具体地,所述第一编程接口为所述预定映射关系中与所述第一虚拟队列相同的虚拟队列对应的编程接口。
所述实施例中,由于内核程序是用户开发的异构计算资源,本申请充分考虑了各所述内核程序可能用到的接口,配置了AXIS接口、AXI4接口以及AXIL接口等多种类型的编程接口,使得所述FPGA加速器的虚拟化功能可以适配各种编程接口的内核程序,进一步地保证了FPGA加速器可以支持任何有所述接口需求的设计,应用在不同的虚拟化场景下,保证了通用性较强。并且,从异构加速器的使用层面来说,本申请的所述内核管理模块统一了驱动程序的接口,简化了编程界面。
为了在进一步地提供主机系统向所述内核程序访问的数据通道的同时,进一步地保证内核程序向所述主机系统的访问实现,具体地,所述第一转换模块还用于在通过多个所述编程接口中的第二编程接口接收到所述目标内核程序发送的初始反馈信息的情况下,将所述初始反馈信息转换为第二命令字,将所述第二命令字以及所述第二编程接口的接口信息发送给所述映射模块;所述映射模块还用于根据所述接口信息和所述预定映射关系,确定对应的所述虚拟队列为第二虚拟队列,并将所述第二命令字以及所述第二虚拟队列的队列信息发出;
如图3所示,所述内核管理模块13还包括:封装模块133,与所述映射模块132以及所述队列虚拟化模块分别连接,所述封装模块133用于将所述第二命令字封装为对应的第二帧数据,并将所述第二帧数据以及对应的所述第二虚拟队列的队列信息发送至所述第二虚拟队列中。
其中,所述封装模块具体是与所述队列虚拟化模块中的第一接收处理模块连接。
根据本申请的再一些可选方案,如图3所示,所述内核管理模块13还包括:
解耦模块134,与所述映射模块132以及所述底层模块(通过图3示出的m_AXIL通道)分别连接,所述解耦模块134用于通过所述底层模块接收所述主机系统发送的所述预定映射关系,并将所述预定映射关系发送给所述映射模块132。
所述实施例中,可以通过主机系统对所述预定映射关系进行配置,再经由所述底层模块发送给解耦模块,即内核管理模块只有读取权限,无修改权限,这样可以防止非授权的内核程序访问,进一步地保证访问的安全性。
具体地,如图3所示,所述映射模块132包括第一映射子模块1321和第二映射子模块1322,所述解耦模块134与所述第一映射子模块1321和所述第二映射子模块1322分别连接,所述第一映射子模块1321与AXIS接口对应的第一转换模块131以及AXI4接口对应的第一转换模块131连接,所述第二映射子模块1322与AXIL接口对应的第一转换模块131连接,所述预定映射关系包括第一映射关系和第二映射关系,所述第一映射关系表征所述虚拟队列与所述编程接口之间的映射关系,所述第二映射关系表征所述虚拟设备、所述物理设备和所述内核程序之间的映射关系,所述解耦模块134用于将所述第一映射关系发送至所述第一映射子模块1321,使得所述第一映射子模块1321根据所述第一虚拟队列的队列信息和所述第一映射关系,将所述第一命令字发送给对应的类型为AXIS接口或者AXI4接口的所述第一编程接口;所述解耦模块134还用于将所述第二映射关系发送至所述第二映射子模块1322,使得所述第二映射子模块根据所述第二映射关系以及AXIL接口与内核程序之间的对应关系,将所述第一命令字发送给对应的AXIL接口。
在本申请中,通过修改所述预定映射关系中虚拟队列、所述内核程序、所述虚拟设备以及编程接口之间的映射关系,可以实现不同的虚拟机分时共享同一个内核程序的使用权的效果,进一步地提升了FPGA加速器内的资源使用率。
另一种可选方案中,如图1所示,所述底层模块包括:
PCIe硬核110,所述PCIe硬核110与所述主机系统连接,用于确定所述FPGA加速器中的物理设备,并通过所述SR-IOV协议将所述物理设备虚拟化为多个虚拟设备,还用于通过所述虚拟设备接收所述初始请求信息;
具体地,利用SR-IOV协议将FPGA加速器中的物理PCIe设备创建为至少一个物理设备,并将每一物理设备虚拟化为若干虚拟设备,其中,一个物理设备最大允许虚拟化出255个虚拟设备。进一步地,基于SR-IOV协议可将FPGA加速器中每一类型的物理PCIe设备创建为PF,并进一步为PF创建若干VF。其中,物理PCIe设备如:内存、网络等。在一种示例中,可以创建至少一个用于管理内存的PF、至少一个用于管理网络的PF。
第一扩展模块111,与所述PCIe硬核110以及所述队列虚拟化模块12分别连接,所述第一扩展模块111用于对所述物理设备进行扩展,所述第一扩展模块还用于将所述PCIe硬核110发出的所述初始请求信息转发至所述队列虚拟化模块12。
具体地,所述第一扩展模块与所述队列虚拟化模块中的DMA读写复用模块连接。
所述实施例中,通过所述PCIe硬核进一步地实现了对FPGA加速器中的PCIe物理设备的虚拟化,由此可使FPGA加速器本身支持资源虚拟化,进一步地实现了FPGA加速器资源的虚拟化和隔离。通过所述第一扩展模块可以实现对FPGA加速器中的物理设备进行扩展,而一个物理设备又可以对应多个虚拟设备,可以满足大量虚拟用户的使用需求。
进一步地,所述PCIe硬核还用于对所述物理设备以及所述虚拟设备进行读写访问操作,还用于对BAR空间进行以及读写访问接口进行配置,以及实现MSIX中断的控制器等。
根据本申请的另一些可选方案,如图1所示,所述底层模块11还包括:桥接模块112,所述第一扩展模块111以及所述队列虚拟化模块12通过所述桥接模块112连接,所述桥接模块112用于提供所述第一扩展模块111和所述队列虚拟化模块12之间的数据传输通道。通过所述桥接模块提供第一扩展模块与队列虚拟化模块之间的数据传输通道,进一步地实现了主机系统通过外壳区与内核区的数据交互。
具体地,所述第一扩展模块以及所述队列虚拟化模块的DMA读写复用模块通过所述桥接模块连接,所述第一扩展模块以及所述队列虚拟化模块的描述符调度模块通过所述桥接模块连接。
在一个示例性实施例中,如图4所示,所述桥接模块112包括:
第二接收处理模块1120,与所述第一扩展模块连接,所述第二接收处理模块1120用于在接收到所述初始请求信息的情况下,从所述初始请求信息中提取DMA读操作指令;
读请求处理模块1121,与所述第二接收处理模块1120以及所述队列虚拟化模块分别连接,所述读请求处理模块1121用于提供将所述DMA读操作指令发送至所述队列虚拟化模块的DMA发送数据通道(简称为RQ通道);
第二发送处理模块1122,与所述第一扩展模块连接,所述第二发送处理模块1122用于接收DMA写操作指令,根据所述DMA写操作指令生成对应的第一TLP帧后发送至所述第一扩展模块,以使得所述第一TLP帧经过所述第一扩展模块以及所述PCIe硬核110发送至所述主机系统;
具体地,通过对所述DMA写操作指令进行封装得到第一TLP帧。
写请求处理模块1123,与所述队列虚拟化模块以及所述第二发送处理模块1122分别连接,所述写请求处理模块1123用于提供将队列虚拟化模块发送的所述DMA写操作指令发送至所述第二发送处理模块1122的DMA接收数据通道(简称为RC通道),其中,所述DMA写操作指令为所述内核程序经所述内核管理模块发送至所述队列虚拟化模块的写操作指令。
所述实施例中,通过所述读请求处理模块以及所述写请求处理模块提供了RQ(Requester Request,请求者请求)和RC(Requester Completion,请求者完成)通道,通过第二接收处理模块将底层模块发出的初始请求信息转换为DMA读操作的指令,通过RQ通道经队列虚拟化模块以及内核管理模块发送给内核程序,通过RC通道将内核程序经内核管理模块以及队列虚拟化模块发送的DMA写操作指令发送给第二发送处理模块,通过第二发送处理模块在DMA描述符的控制下将接收到的DMA写操作指令组装成TLP帧,在经底层模块反馈至主机系统。
需要说明的是,通过RQ通道来传输初始请求信息中请求访问所述内核程序的信息。通过RC通道来传输内核程序响应于该请求访问所述内核程序的信息生成的反馈信息。
进一步地,如图4所示,所述桥接模块还包括:
CC/CQ通道TLP帧处理模块1124,与图1中的所述第一扩展模块111连接,所述CC/CQ通道TLP帧处理模块1124用于提供将所述初始请求信息发出的桥发送数据通道(简称为CQ通道);
第二转换模块1125,与所述CC/CQ通道TLP帧处理模块1124、所述队列虚拟化模块以及所述内核管理模块分别连接,所述第二转换模块1125用于接收所述CC/CQ通道TLP帧处理模块1124发送的所述初始请求信息,根据所述编程接口的接口协议,将所述初始请求信息转换为所述编程接口可识别的预定指令并发送给所述队列虚拟化模块以及所述内核管理模块。
所述实施例中,通过所述CC/CQ通道TLP帧处理模块提供从主机系统向内核程序发送CQ请求的CQ通道,通过第二转换模块将该CQ请求转换为编程接口可识别的指令,最终由编程接口发送给对应的内核程序。
需要说明的是,通过CQ通道来传输所述初始请求信息中除了请求访问所述内核程序的信息之外的信息,比如,所述预定映射关系、可用描述符表以及其他的状态查询指令等,再将这些信息转换为编程接口可识别的信息,得到所述预定指令。
此外,本申请中,如图4所示,所述第二转换模块1125还用于通过所述队列虚拟化模块或者所述内核管理模块接收所述内核程序发送的初始反馈信息,并采用所述编程接口的接口协议将所述初始反馈信息转换为所述编程接口可识别的第二TLP帧;所述CC/CQ通道TLP帧处理模块1124还用于提供将所述第二TLP帧发送至所述第一扩展模块的桥接收数据通道(简称为CC通道)。通过第二转换模块将该CC请求转换为编程接口可识别的TLP帧,通过所述CC/CQ通道TLP帧处理模块提供从内核程序向主机系统发送CC请求的CC通道。
具体地,所述第二转换模块通过AXIL通道与所述队列虚拟化模块以及所述内核管理模块连接,具体为所述第二转换模块通过AXIL通道与所述队列虚拟化模块的调取模块连接,所述第二转换模块通过AXIL通道与所述内核管理模块的解耦模块连接。
在实际的应用过程中,编程接口可以有多个,编程接口的类型也可以有多种,为了进一步地保证FPGA加速器的资源利用率较高,并且进一步地保证所述FPGA加速器的虚拟化功能可以适配各种接口,根据本申请的又一些可选实施例,如图4所示,所述桥接模块112还包括:第二扩展模块1126,所述第二转换模块1125通过所述第二扩展模块1126与所述队列虚拟化模块以及所述内核管理模块连接,所述第二扩展模块1126用于对所述第二转换模块1125进行扩展。通过所述第二扩展模块对第二转换模块进行扩展,可以实现将多个初始请求信息转换为多个编程接口可识别的信息,使得不同虚拟机或不同容器便可同时调用不同内核程序,进一步地满足用户数据的隔离和保护,以及实现将初始请求信息转换为不同类型的编程接口可识别的信息,进一步地保证FPGA加速器的虚拟化功能可以较为灵活地适配各种接口。
在一个示例性实施例中,如图1所示,所述内核区31还包括板载内存311,所述初始请求信息还包括请求访问所述板载内存的信息,所述内核管理模块还通过多个所述编程接口中的部分访问所述板载内存。除了实现虚拟机或者容器通过IP核使用内核程序之外,本实施例中还实现了对板载内存的虚拟化,主机系统的虚拟机或者容器可以通过本申请的所述IP核使用板载内存的内存资源。
根据本申请的另一个实施例,还提供了一种如图5所示的加速器系统,包括:服务器,包括主机系统20;至少一个任一种所述的FPGA加速器30,与所述服务器连接,所述FPGA加速器30包括内核区31以及外壳区32,所述内核区31包括多个内核程序,外壳区包括所述的IP核10。
所述的加速器系统包括服务器和至少一个所述的FPGA加速器,通过在FPGA加速器中构造兼容VirtIO规范的IP核,提供了依次连接的底层模块、队列虚拟化模块以及内核管理模块,通过底层模块与服务器中的主机系统连接,通过内核管理模块与内核区的多个内核程序连接,该底层模块支持SR-IOV协议,可以提供PCIe桥接能力,队列虚拟化模块以及内核管理模块支持VirtIO规范,为内核程序提供专用的虚拟队列与主机程序进行通信与数据传输,主机系统中不同虚拟机或者不同容器可以同时调用不同的内核程序,在硬件FPGA加速器上实现了加速器资源的虚拟化,服务器上的不同虚拟机或不同容器可以同时绑定同一FPGA加速器中的不同资源,提高了FPGA加速器资源的利用率,避免了由于FPGA加速度不支持虚拟化功能,造成FPGA加速器资源浪费的问题。
在一个示例性实施例中,所述FPGA加速器还包括硬件存储资源。具体地,如图5所示,所述FPGA加速器30插接于主机系统20的插槽上,主机系统20提供有参与FPGA加速器30运行的各种程序,FPGA加速器30提供有内存条33以及网络接口34等硬件资源。
在一个示例性实施例中,所述内核区还包括内核程序互联模块(图中未示出),所述内核程序互联模块用于互联不同的所述内核程序。
需要说明的是,所述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:所述模块均位于同一处理器中;或者,所述各个模块以任意组合的形式分别位于不同的处理器中。
在一个示例性实施例中,所述硬件存储资源可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储资源的介质。
本实施例中的具体示例可以参考所述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,所述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (20)
1.一种FPGA加速器,所述FPGA加速器包括外壳区和内核区,所述内核区包括多个内核程序,其特征在于,所述外壳区包括:
支持SR-IOV协议的底层模块,所述底层模块用于与服务器中的主机系统连接,所述底层模块用于将物理设备虚拟化为多个虚拟设备,在通过所述虚拟设备接收到所述主机系统发出的初始请求信息的情况下,将所述初始请求信息发出,所述初始请求信息包括请求访问所述内核程序的信息;
队列虚拟化模块,与所述底层模块连接,所述队列虚拟化模块创建有多个支持VirtIO规范的虚拟队列,所述队列虚拟化模块用于读取所述初始请求信息,根据预定映射关系将所述初始请求信息发送至多个所述虚拟队列中的第一虚拟队列中,所述预定映射关系至少表征所述虚拟队列、所述内核程序、所述虚拟设备以及编程接口之间的映射关系;
内核管理模块,与所述队列虚拟化模块连接,并通过多个所述编程接口访问所述内核程序,所述内核管理模块用于从所述第一虚拟队列中读取所述初始请求信息,根据所述预定映射关系确定对应的所述编程接口为第一编程接口,根据所述第一编程接口的接口协议将所述初始请求信息转换为目标请求信息后发送给所述第一编程接口,以使得所述目标请求信息经过所述第一编程接口到达多个所述内核程序中的目标内核程序,所述第一编程接口为与所述第一虚拟队列对应的所述编程接口。
2.根据权利要求1所述的FPGA加速器,其特征在于,所述队列虚拟化模块包括:
队列管理模块,用于监控多个所述虚拟队列的队列状态,控制所述虚拟队列的输入以及输出,生成触发获取可用描述符的触发信息;
描述符执行模块,与所述底层模块连接,所述描述符执行模块用于根据所述触发信息,从所述主机系统的可用描述符表中获取所述可用描述符;
包调度模块,与所述队列管理模块连接,所述包调度模块用于接收所述描述符执行模块获取的所述可用描述符,从所述队列管理模块中获取多个所述虚拟队列的队列状态,根据所述预定映射关系以及多个所述虚拟队列的队列状态,从多个所述虚拟队列中确定所述第一虚拟队列,将所述第一虚拟队列的队列信息和所述可用描述符发出;
第一发送处理模块,与所述包调度模块以及所述内核管理模块分别连接,所述第一发送处理模块用于接收所述可用描述符和所述第一虚拟队列的队列信息,根据所述可用描述符从所述可用描述符指向的缓冲区读取所述初始请求信息,并根据所述第一虚拟队列的队列信息将所述初始请求信息发送至所述第一虚拟队列。
3.根据权利要求2所述的FPGA加速器,其特征在于,所述第一发送处理模块还用于将初始请求信息发送至所述第一虚拟队列之后,确定所述可用描述符为已用描述符并发出,所述队列虚拟化模块还包括:
缓存模块,与所述描述符执行模块以及所述包调度模块分别连接,所述描述符执行模块用于将所述可用描述符缓存至所述缓存模块,所述包调度模块用于从所述缓存模块中读取所述可用描述符;
队列更新模块,与所述第一发送处理模块以及所述队列管理模块分别连接,所述队列更新模块用于接收所述第一发送处理模块发送的所述已用描述符,将所述已用描述符发送给所述队列管理模块,以使得所述队列管理模块将所述已用描述符返回至所述主机系统。
4.根据权利要求3所述的FPGA加速器,其特征在于,所述队列虚拟化模块还包括:
描述符调度模块,与所述底层模块、所述队列管理模块以及所述描述符执行模块分别连接,所述描述符执行模块通过所述描述符调度模块从所述主机系统的所述可用描述符表中读取所述可用描述符,所述队列管理模块通过所述描述符调度模块返回所述已用描述符至所述主机系统。
5.根据权利要求3所述的FPGA加速器,其特征在于,所述队列虚拟化模块还包括:
第一接收处理模块,与所述内核管理模块、所述包调度模块以及所述队列更新模块分别连接,所述第一接收处理模块用于在从多个所述虚拟队列中的第二虚拟队列读取到反馈信息的情况下,从所述包调度模块中读取所述可用描述符,并根据所述可用描述符将所述反馈信息发送至所述可用描述符指向的缓冲区,所述反馈信息为所述内核管理模块对所述目标内核程序发送的初始反馈信息进行处理得到的,所述初始反馈信息为所述目标内核程序响应于所述目标请求信息生成的,所述第一接收处理模块还用于在将所述反馈信息发送至所述可用描述符指向的缓冲区之后,确定所述可用描述符为所述已用描述符,并将所述已用描述符发送至所述队列更新模块,以使得所述队列更新模块将所述已用描述符返回至所述主机系统;
DMA读写复用模块,所述描述符执行模块、所述第一发送处理模块以及所述第一接收处理模块分别通过所述DMA读写复用模块与所述底层模块连接,所述DMA读写复用模块用于提供所述底层模块与所述描述符执行模块、所述第一发送处理模块以及所述第一接收处理模块之间的DMA读写接口。
6.根据权利要求1所述的FPGA加速器,其特征在于,所述内核管理模块包括:
解析模块,与所述队列虚拟化模块连接,所述解析模块用于从所述第一虚拟队列中读取所述初始请求信息,对所述初始请求信息进行解析,得到第一命令字,并将所述第一命令字以及所述第一虚拟队列的队列信息发出;
多个第一转换模块,多个所述第一转换模块一一对应地与所述编程接口连接,所述第一转换模块用于根据对应的所述编程接口的所述接口协议,将所述第一命令字转换为所述接口协议可识别的信息;
映射模块,与所述解析模块以及多个第一转换模块分别连接,所述映射模块存储有所述预定映射关系,所述映射模块用于接收所述第一命令字和所述第一虚拟队列的队列信息,根据所述第一虚拟队列的队列信息和所述预定映射关系,确定对应的所述编程接口为所述第一编程接口,并将所述第一命令字发送给所述第一编程接口对应的所述第一转换模块。
7.根据权利要求6所述的FPGA加速器,其特征在于,
所述第一转换模块还用于在通过多个所述编程接口中的第二编程接口接收到所述目标内核程序发送的初始反馈信息的情况下,将所述初始反馈信息转换为第二命令字,将所述第二命令字以及所述第二编程接口的接口信息发送给所述映射模块;
所述映射模块还用于根据所述接口信息和所述预定映射关系,确定对应的所述虚拟队列为第二虚拟队列,并将所述第二命令字以及所述第二虚拟队列的队列信息发出;
所述内核管理模块还包括:封装模块,与所述映射模块以及所述队列虚拟化模块分别连接,所述封装模块用于将所述第二命令字封装为对应的第二帧数据,并将所述第二帧数据以及对应的所述第二虚拟队列的队列信息发送至所述第二虚拟队列中。
8.根据权利要求6所述的FPGA加速器,其特征在于,所述内核管理模块还包括:
解耦模块,与所述映射模块以及所述底层模块分别连接,所述解耦模块用于通过所述底层模块接收所述主机系统发送的所述预定映射关系,并将所述预定映射关系发送给所述映射模块。
9.根据权利要求1至8中任一项所述的FPGA加速器,其特征在于,多个所述编程接口包括AXIS接口、AXI4接口以及AXIL接口。
10.根据权利要求1至8中任一项所述的FPGA加速器,其特征在于,所述底层模块包括:
PCIe硬核,所述PCIe硬核与所述主机系统连接,用于确定所述FPGA加速器中的物理设备,并通过所述SR-IOV协议将所述物理设备虚拟化为多个虚拟设备,还用于通过所述虚拟设备接收所述初始请求信息;
第一扩展模块,与所述PCIe硬核以及所述队列虚拟化模块分别连接,所述第一扩展模块用于对所述物理设备进行扩展,所述第一扩展模块还用于将所述PCIe硬核发出的所述初始请求信息转发至所述队列虚拟化模块。
11.根据权利要求10所述的FPGA加速器,其特征在于,所述底层模块还包括:
桥接模块,所述第一扩展模块以及所述队列虚拟化模块通过所述桥接模块连接,所述桥接模块用于提供所述第一扩展模块和所述队列虚拟化模块之间的数据传输通道。
12.根据权利要求11所述的FPGA加速器,其特征在于,所述桥接模块包括:
第二接收处理模块,与所述第一扩展模块连接,所述第二接收处理模块用于在接收到所述初始请求信息的情况下,从所述初始请求信息中提取DMA读操作指令;
读请求处理模块,与所述第二接收处理模块以及所述队列虚拟化模块分别连接,所述读请求处理模块用于提供将所述DMA读操作指令发送至所述队列虚拟化模块的DMA发送数据通道;
第二发送处理模块,与所述第一扩展模块连接,所述第二发送处理模块用于接收DMA写操作指令,根据所述DMA写操作指令生成对应的第一TLP帧后发送至所述第一扩展模块,以使得所述第一TLP帧经过所述第一扩展模块以及所述PCIe硬核发送至所述主机系统;
写请求处理模块,与所述队列虚拟化模块以及所述第二发送处理模块分别连接,所述写请求处理模块用于提供将队列虚拟化模块发送的所述DMA写操作指令发送至所述第二发送处理模块的DMA接收数据通道,其中,所述DMA写操作指令为所述内核程序经所述内核管理模块发送至所述队列虚拟化模块的写操作指令。
13.根据权利要求12所述的FPGA加速器,其特征在于,所述桥接模块还包括:
CC/CQ通道TLP帧处理模块,与所述第一扩展模块连接,所述CC/CQ通道TLP帧处理模块用于提供将所述初始请求信息发出的桥发送数据通道;
第二转换模块,与所述CC/CQ通道TLP帧处理模块、所述队列虚拟化模块以及所述内核管理模块分别连接,所述第二转换模块用于接收所述CC/CQ通道TLP帧处理模块发送的所述初始请求信息,根据所述编程接口的接口协议,将所述初始请求信息转换为所述编程接口可识别的预定指令并发送给所述队列虚拟化模块以及所述内核管理模块。
14.根据权利要求13所述的FPGA加速器,其特征在于,所述第二转换模块还用于通过所述队列虚拟化模块或者所述内核管理模块接收所述内核程序发送的初始反馈信息,并采用所述编程接口的接口协议将所述初始反馈信息转换为所述编程接口可识别的第二TLP帧;
所述CC/CQ通道TLP帧处理模块还用于提供将所述第二TLP帧发送至所述第一扩展模块的桥接收数据通道。
15.根据权利要求13所述的FPGA加速器,其特征在于,所述桥接模块还包括:
第二扩展模块,所述第二转换模块通过所述第二扩展模块与所述队列虚拟化模块以及所述内核管理模块连接,所述第二扩展模块用于对所述第二转换模块进行扩展。
16.根据权利要求10所述的FPGA加速器,其特征在于,所述PCIe硬核还用于对所述物理设备以及所述虚拟设备进行读写访问操作,还用于对BAR空间进行以及读写访问接口进行配置。
17.根据权利要求1至8中任一项所述的FPGA加速器,其特征在于,所述内核区还包括板载内存,所述初始请求信息还包括请求访问所述板载内存的信息,所述内核管理模块还通过多个所述编程接口中的部分访问所述板载内存。
18.一种加速器系统,其特征在于,包括:
服务器,包括主机系统;
至少一个权利要求1至17中任一项所述的FPGA加速器,与所述服务器连接,所述FPGA加速器包括内核区以及外壳区,所述内核区包括多个内核程序。
19.根据权利要求18所述的加速器系统,其特征在于,所述FPGA加速器还包括硬件存储资源。
20.根据权利要求18所述的加速器系统,其特征在于,所述内核区还包括内核程序互联模块,所述内核程序互联模块用于互联不同的所述内核程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311839050.4A CN117493236B (zh) | 2023-12-28 | 2023-12-28 | Fpga加速器以及加速器系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311839050.4A CN117493236B (zh) | 2023-12-28 | 2023-12-28 | Fpga加速器以及加速器系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117493236A true CN117493236A (zh) | 2024-02-02 |
CN117493236B CN117493236B (zh) | 2024-03-01 |
Family
ID=89674882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311839050.4A Active CN117493236B (zh) | 2023-12-28 | 2023-12-28 | Fpga加速器以及加速器系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117493236B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1761222A (zh) * | 2005-11-22 | 2006-04-19 | 华中科技大学 | 一种支持虚拟接口的存储网络适配器 |
CN101706742A (zh) * | 2009-11-20 | 2010-05-12 | 北京航空航天大学 | 一种基于多核动态划分的非对称虚拟机i/o调度方法 |
CN101917350A (zh) * | 2010-09-13 | 2010-12-15 | 南京中兴特种软件有限责任公司 | 一种Linux下基于网卡驱动的零拷贝以太网报文捕获及发送的实现方法 |
-
2023
- 2023-12-28 CN CN202311839050.4A patent/CN117493236B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1761222A (zh) * | 2005-11-22 | 2006-04-19 | 华中科技大学 | 一种支持虚拟接口的存储网络适配器 |
CN101706742A (zh) * | 2009-11-20 | 2010-05-12 | 北京航空航天大学 | 一种基于多核动态划分的非对称虚拟机i/o调度方法 |
CN101917350A (zh) * | 2010-09-13 | 2010-12-15 | 南京中兴特种软件有限责任公司 | 一种Linux下基于网卡驱动的零拷贝以太网报文捕获及发送的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117493236B (zh) | 2024-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10579305B2 (en) | Method and apparatus for processing read/write request in physical machine | |
US20190155760A1 (en) | NVME Data Processing Method and NVME Device | |
EP1896965B1 (en) | Dma descriptor queue read and cache write pointer arrangement | |
US12061566B2 (en) | IO processing method and apparatus | |
EP3086228A1 (en) | Resource processing method, operating system, and device | |
CN116243995B (zh) | 通信方法、装置、计算机可读存储介质以及电子设备 | |
CN112540941A (zh) | 一种数据转发芯片及服务器 | |
CA2987807C (en) | Computer device and method for reading/writing data by computer device | |
CN116069711B (zh) | 直接内存访问控制器、异构设备、内存访问方法及介质 | |
US20220300448A1 (en) | Peripheral component interconnect express device and method of operating the same | |
JP2022506592A (ja) | ストリーミングプラットフォームフローおよびアーキテクチャ | |
KR20220141678A (ko) | PCIe 펑션 및 그 동작 방법 | |
CN114691286A (zh) | 服务器系统、虚拟机创建方法及装置 | |
US10216664B2 (en) | Remote resource access method and switching device | |
CN117032812A (zh) | 服务器的管理方法、设备、装置、存储介质和电子设备 | |
CN115658586A (zh) | 资源管理芯片、方法、电子设备及可读存储介质 | |
CN117369734B (zh) | 一种存储资源管理系统、方法及存储虚拟化系统 | |
CN117369906B (zh) | Pcie验证平台、方法、装置、存储介质及电子设备 | |
CN117493236B (zh) | Fpga加速器以及加速器系统 | |
US20230153153A1 (en) | Task processing method and apparatus | |
CN116841731A (zh) | 一种fpga虚拟化资源调度系统及方法 | |
KR20210006127A (ko) | 다중 프로세서 인터럽트 신호 처리 장치 | |
CN117312202B (zh) | 片上系统和用于片上系统的数据传输方法 | |
CN117971135B (zh) | 存储设备的访问方法、装置、存储介质和电子设备 | |
US20230350824A1 (en) | Peripheral component interconnect express device and operating method thereof |
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 |