CN108897601A - 一种基于虚拟化的fpga使用方法、系统及相关装置 - Google Patents
一种基于虚拟化的fpga使用方法、系统及相关装置 Download PDFInfo
- Publication number
- CN108897601A CN108897601A CN201810697707.0A CN201810697707A CN108897601A CN 108897601 A CN108897601 A CN 108897601A CN 201810697707 A CN201810697707 A CN 201810697707A CN 108897601 A CN108897601 A CN 108897601A
- Authority
- CN
- China
- Prior art keywords
- vfpga
- fpga
- container
- carry
- distributed
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45554—Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本申请公开了一种基于虚拟化的FPGA使用方法,利用SR‑IOV技术将单个物理的FPGA虚拟为多个VFPGA,并为每个创建好的容器分配一个VFPGA,在借助挂载工具将每个已分配的VFPGA挂载至对应的容器后,每个容器即可通过挂载于自身的VFPGA进行后续操作,区别于传统每个容器需要占用一整个物理FPGA的方式,本申请可借由SR‑IOV的硬件虚拟化技术实现多个容器对应一个物理FPGA,在减少FGPA使用数量的同时还能够提升FPGA的性能使用率。本申请还同时公开了一种基于虚拟化的FPGA使用系统、FPGA及计算机可读存储介质,具有上述有益效果。
Description
技术领域
本申请涉及容器化技术领域,特别涉及一种基于虚拟化的FPGA使用方法、系统、FPGA及计算机可读存储介质。
背景技术
随着人工智能的兴起,对数据运算量和运算速度提出了更高的要求,这也导致了FPGA(Field-Programmable Gate Array,现场可编程门阵列)在加速运算领域扮演着越来越重要的角色,很多应用和服务借助FPGA提供的支持可以显著提升运算速度和效率。
Docker作为一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何运行Linux(一种流行的操作系统)的机器上,相比于传统方式,由于采用基于Docker的容器化技术无需依赖外界环境,拥有更高的安全性和更低的系统软件耦合性。
在PAAS平台(Platform-as-a-Service,平台即服务,即把服务器平台作为一种服务提供的商业模式)中,现有技术采用基于PassThrough的方式建立每个FPGA与容器间的连接,但在这种实现方式下每个容器都需要通过PassThrough与一个单独的FPGA建立连接,以实现后续操作,但实际情况下每个单一的容器都无法完全利用每个FPGA的完整性能,性价比(FPGA已使用性能与实现成本间的比例)较低。
因此,如何克服现有FPGA与容器间使用机制中存在的各项技术缺陷,提供一种实现成本更低、每个FPGA性能利用率更高的FPGA与容器间使用机制是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种基于虚拟化的FPGA使用方法,利用SR-IOV技术将单个物理的FPGA虚拟为多个VFPGA,并为每个创建好的容器分配一个VFPGA,在借助挂载工具将每个已分配的VFPGA挂载至对应的容器后,每个容器即可通过挂载于自身的VFPGA进行后续操作,区别于传统每个容器需要占用一整个物理FPGA的方式,本申请可借由SR-IOV的硬件虚拟化技术实现多个容器对应一个物理FPGA,在减少FGPA使用数量的同时还能够提升FPGA的性能使用率。
本申请的另一目的在于提供了一种基于虚拟化的FPGA使用系统、FPGA及计算机可读存储介质。
为实现上述目的,本申请提供一种基于虚拟化的FPGA使用方法,包括:
利用SR-IOV技术将单个FPGA虚拟为预设数量的VFPGA;
为每个创建好的容器分别分配一个所述VFPGA,并将每个已被分配的VFPGA挂载至对应的容器上,以使每个所述容器通过挂载于自身的VFPGA执行后续操作。
可选的,在为每个创建好的容器分别分配一个所述VFPGA之前,还包括:
为每个所述VFPGA进行命名,得到各VFPGA ID;
统计各所述VFPGA ID,生成包含各所述VFPGA ID的VFGPA待分配池;
对应的,为每个创建好的容器分别分配一个所述VFPGA具体包括;
为每个创建好的容器分别从所述VFGPA待分配池中任选一个VFPGA ID;
将每个选取出的VFPGA ID对应的VFPGA分配给相应的容器。
可选的,在将每个选取出的VFPGA ID对应的VFPGA分配给相应的容器之后,还包括:
为已分配给一个所述容器的VFPGA附加已分配标记,并将附加有所述已分配标记的VFPGA的VFPGA ID从所述VFGPA待分配池中移除。
可选的,该基于虚拟化的FPGA使用方法还包括:
当目标容器不再需要挂载于自身的VFPGA时,解除目标VFPGA与所述目标容器间存在的挂载关系,并去除附加于所述目标VFPGA上的已分配标记,得到待分配VFPGA;其中,所述目标VFPGA为之前与所述目标容器间存在所述挂载关系的VFPGA;
将所述待分配VFPGA的VFPGA ID补充进所述VFPGA待分配池。
为实现上述目的,本申请还提供了一种基于虚拟化的FPGA使用系统,该基于虚拟化的FPGA使用系统包括:
SR-IOV虚拟化单元,用于利用SR-IOV技术将单个FPGA虚拟为预设数量的VFPGA;
VFPGA分配及挂载单元,用于为每个创建好的容器分别分配一个所述VFPGA,并将每个已被分配的VFPGA挂载至对应的容器上,以使每个所述容器通过挂载于自身的VFPGA执行后续操作。
可选的,该基于虚拟化的FPGA使用系统还包括:
VFPGA命名单元,用于为每个所述VFPGA进行命名,得到各VFPGA ID;
VFGPA待分配池生成单元,用于统计各所述VFPGA ID,生成包含各所述VFPGA ID的VFGPA待分配池;
对应的,所述VFPGA分配及挂载单元具体包括;
任一选取子单元,用于为每个创建好的容器分别从所述VFGPA待分配池中任选一个VFPGA ID;
分配子单元,用于将每个选取出的VFPGA ID对应的VFPGA分配给相应的容器。
可选的,该基于虚拟化的FPGA使用系统还包括:
已分配标记附加及已分配VFPGA移出单元,用于为已分配给一个所述容器的VFPGA附加已分配标记,并将附加有所述已分配标记的VFPGA的VFPGA ID从所述VFGPA待分配池中移除。
可选的,该基于虚拟化的FPGA使用系统还包括:
挂载关系解除及已分配标记去除单元,用于当目标容器不再需要挂载于自身的VFPGA时,解除目标VFPGA与所述目标容器间存在的挂载关系,并去除附加于所述目标VFPGA上的已分配标记,得到待分配VFPGA;其中,所述目标VFPGA为之前与所述目标容器间存在所述挂载关系的VFPGA;
待分配VFPGA池补充单元,用于将所述待分配VFPGA的VFPGA ID补充进所述VFPGA待分配池。
为实现上述目的,本申请还提供了一种FPGA,该FPGA包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述内容所描述的FPGA使用方法的步骤。
为实现上述目的,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述内容所描述的FPGA使用方法的步骤。
显然,本申请所提供的一种基于虚拟化的FPGA使用方法,该方法利用SR-IOV技术将单个物理的FPGA虚拟为多个VFPGA,并为每个创建好的容器分配一个VFPGA,在借助挂载工具将每个已分配的VFPGA挂载至对应的容器后,每个容器即可通过挂载于自身的VFPGA进行后续操作,区别于传统每个容器需要占用一整个物理FPGA的方式,本申请可借由SR-IOV的硬件虚拟化技术实现多个容器对应一个物理FPGA,在减少FGPA使用数量的同时还能够提升FPGA的性能使用率。本申请同时还提供了一种基于虚拟化的FPGA使用系统、FPGA及计算机可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种基于虚拟化的FPGA使用方法的流程图;
图2为本申请实施例提供的另一种基于虚拟化的FPGA使用方法的流程图;
图3为一种现有FPGA与容器间连接关系的示意图;
图4为本申请实施例提供的一种FPGA与容器间连接关系的示意图;
图5为本申请实施例提供的一种基于虚拟化的FPGA使用系统的结构框图。
具体实施方式
本申请的核心是提供一种基于虚拟化的FPGA使用方法,该方法利用SR-IOV技术将单个物理的FPGA虚拟为多个VFPGA,并为每个创建好的容器分配一个VFPGA,在借助挂载工具将每个已分配的VFPGA挂载至对应的容器后,每个容器即可通过挂载于自身的VFPGA进行后续操作,区别于传统每个容器需要占用一整个物理FPGA的方式,本申请可借由SR-IOV的硬件虚拟化技术实现多个容器对应一个物理FPGA,在减少FGPA使用数量的同时还能够提升FPGA的性能使用率。本申请的另一核心是提供一种基于虚拟化的FPGA使用系统、FPGA及计算机可读存储介质,具有上述有益效果。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
以下结合图1,图1为本申请实施例提供的一种基于虚拟化的FPGA使用方法的流程图,具体包括以下步骤:
S101:利用SR-IOV技术将单个FPGA虚拟为预设数量的VFPGA;
本步骤旨在利用硬件虚拟化技术将单个物理的FPGA虚拟成逻辑上的、可识别的多个VFPGA(Virtual-FPGA,虚拟FPGA),以将现有技术中FPGA与容器间一对一的对应关系改变为一对多的对应关系,从而大幅度提升FPGA的性能使用率和降低实现成本。
其中,SR-IOV技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性,SR-IOV标准允许在虚拟机之间高效共享PCIe(Peripheral Component InterconnectExpress,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的I/O性能。SR-IOV规范定义了新的标准,根据该标准,创建的新设备可允许将虚拟机直接连接到I/O设备。
利用SR-IOV技术可以将实体数量为一个的FPGA虚拟为逻辑上的、可识别的多个VFPGA,虽然这些VFPGA实际上都是同一个FPGA,但每个不同的VFPGA实际上只是一个完整FPGA的一部分,就好像原先一个8核心处理器被一个任务独占,但实际上这个任务用不了这个8核心处理器的全部性能,很大一部分性能都处于未使用、浪费的状态,但没办法,这是基于上层协议固定的,而本申请在通过使用不同的上层协议,利用虚拟化技术将这个8核心处理器虚拟为8个虚拟处理器,当然这8个虚拟处理器中的每个虚拟处理器的性能都比不上原先的8核心处理器,一种性能分配方式为均分,即8个虚拟处理器都拥有原先8核心处理器总性能的1/8,进一步的,还可以通过有效的复用手段使得每个虚拟处理器拥有大于原先8核心处理器总性能的1/8的性能。
借由SR-IOV虚拟出来的VFPGA也会像原先的FPGA一样拥有自己的身份识别标识,因此可被操作系统正常识别到,就好像真的存在多个FPGA一样,但实际上无论对哪个VFPGA执行操作实际上也是由原先的FPGA真正执行。
S102:为每个创建好的容器分别分配一个VFPGA,并将每个已被分配的VFPGA挂载至对应的容器上,以使每个容器通过挂载于自身的VFPGA执行后续操作。
在S101的基础上,本步骤旨在将借由SR-IOV技术虚拟出来的多个VFPGA分配给各个已经创建好的容器,即为每个创建好的容器分别分配一个VFPGA,在分配好后,还需将每个已被分配的VFPGA挂载至对应的容器上才能够使每个容器通过挂载于自身的VFPGA执行后续操作,即才能使每个容器对应的服务或应用享受到FPGA带来的运算加速效果。
此处的容器是指利用对服务或应用采用容器化技术进行容器化处理后得到的服务或应用的一种表现形式,对容器化技术更具体解释可参见背景技术部分,在此不再赘述。
进一步的,具体如何为每个容器分配VFPGA,方式多种多样,在串行处理分配方式下,可以按照一定的顺序对多个同时处于待分配VFPGA的容器进行排序,已根据排序结果确定先为哪些容器分配VFPGA,更进一步的,还可以对同时虚拟出来的多个VFPFA也按照一定的顺序进行排序,以根据排序结果确定先将哪个VFPGA分配给容器,例如,可以按照一定的命名规则对各VFPGA进行命名,之后就可以对各VFPGA按照编号的大小进行排序等,此处并不做具体限定,本领域技术人员可在本步骤思想的指导下得到多种具体实现方式,只要能够实现为每个容器分配一个VFPGA的目的即可,可根据实际情况的不同,灵活选择最合适的分配方式。
在挂载步骤中,可以借助通用的挂载工具实现将一个VFPGA挂载至一个容器上的目的,实际上就是建立两者间的一个绑定关系,以使该容器对应的应的服务或应用可通过与自身绑定的VFPGA最终实现运算加速的目的。
更进一步的,根据操作系统运行状况的不同、实时功能的变动,有些应用或服务可能不再使用,此时还可以解除其与已挂载在自身的VFPGA间的挂载关系,即释放这个VFPGA,使得这个释放的VFPGA可以重新被分配和挂载至另一个需要的服务或应用的容器上。
具体实现过程中,为了区别各VFPGA的不同状态(已被分配、未被分配)还可以通过附加不同状态下对应的识别标识来进行区分。
基于上述技术方案,本申请实施例提供的一种基于虚拟化的FPGA使用方法,利用SR-IOV技术将单个物理的FPGA虚拟为多个VFPGA,并为每个创建好的容器分配一个VFPGA,在借助挂载工具将每个已分配的VFPGA挂载至对应的容器后,每个容器即可通过挂载于自身的VFPGA进行后续操作,区别于传统每个容器需要占用一整个物理FPGA的方式,本申请可借由SR-IOV的硬件虚拟化技术实现多个容器对应一个物理FPGA,在减少FGPA使用数量的同时还能够提升FPGA的性能使用率。
以下结合图2,图2为本申请实施例提供的另一种基于虚拟化的FPGA使用方法的流程图,本实施例在实施例一的基础上,通过为各VFPGA进行命名以及生成包含各VFPGA ID的VFGPA待分配池,每次从该VFGPA待分配池任选一个VFPGA分配给需要的容器,并通过为已分配的VFPGA附加已分配标记来区别不同状态的VFPGA,进而将附加有该标记的VFPGA对应的VFPGA ID从待分配池中移除,使得实际效果更佳,具体实施步骤如下:
S201:利用SR-IOV技术将单个FPGA虚拟为预设数量的VFPGA;
S202:为每个VFPGA进行命名,得到各VFPGA ID;
S203:统计各VFPGA ID,生成包含各VFPGA ID的VFGPA待分配池;
S204:为每个创建好的容器分别从VFGPA待分配池中任选一个VFPGA ID;
S205:将每个选取出的VFPGA ID对应的VFPGA分配给相应的容器;
S206:为已分配给一个容器的VFPGA附加已分配标记,并将附加有已分配标记的VFPGA的VFPGA ID从VFGPA待分配池中移除;
S207:将每个已被分配的VFPGA挂载至对应的容器上,以使每个容器通过挂载于自身的VFPGA执行后续操作。
进一步的,当目标容器不再需要挂载于自身的VFPGA时,解除目标VFPGA与目标容器间存在的挂载关系,并去除附加于目标VFPGA上的已分配标记,得到待分配VFPGA;
将待分配VFPGA的VFPGA ID补充进VFPGA待分配池,以重新为该待分配VFPGA分配给并挂载至需要的容器。其中,目标VFPGA为之前与目标容器间存在挂载关系的VFPGA。
实施例三
在基于上述实施例的基础上,本实施例结合实际场景,分别结合图3所示的现有技术和图4所示的本申请对本申请发明点进行阐述:
如图3所示,现有技术中的每个容器需要通过MMU(Memory Management Unit,内存管理单元)与对应FPGA建立连接,即一个容器对应一个实体FPGA的方式;
如图4所示,仅使用一个物理FPGA设备,利用SR-IOV技术虚拟化成多个VFPGA设备,并配合相应的挂载工具可以动态的建立和取消各VFPGA和容器之间的挂载关系,能够显著的改善FPGA在云环境中的使用效率,极大的减少了使用FPGA的成本。
具体实施方式如下:
首先对FPGA的驱动进行改写,使得FPGA支持SRIOV技术:
(1)PF驱动:PF驱动可以直接访问PF的所有的资源,并负责管理和配置所有VF;
(2)VF驱动:像普通的PCIE驱动一样运行在客户机上,直接访问特定的VF设备完成数据的搬移,期间不需要VMM的参与;
(3)IOVM:IOVM为每个VF分配完整的虚拟配置空间,因此客户机能够像普通设备一样模仿和配置VF。
其中,PF就是物理网卡所支持的一项PCI(Peripheral Component Interconnect,外设部件互连标准,它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽)功能,PF可以扩展出若干个VF;
VF是支持SR-IOV的物理网卡所虚拟出的一个“网卡”或者说虚出来的一个实例,它会以一个独立网卡的形式呈现出来,每一个VF有它自己独享的PCI配置区域,并且可能与其他VF共享着同一个物理资源(公用同一个物理网口);
PF驱动是工作于虚拟化平台父区域的,并在VF之前最先加载;
VF驱动是工作于虚拟化平台子区域的;
需要注意的是,VF及PF之间是隔离的,任何经由VF驱动或所执行的结果都不会影响到其他的VF或PF。
接下来通过上层接口创建N个VFPGA,并将这些VFPGA通过挂载工具分别挂载至不同的已创建容器中,此时会在容器内的相应目录下看到VFPGA的设备描述符,通过该描述符我们就可以像操作物理FPGA那样操作VFPGA,所有操作VFPGA的操作都会经过驱动从容操作真正的物理FPGA:
(1)创建需要使用虚拟FPGA的容器,容器内包含相应的应用或服务;
(2)使用挂载工具动态的挂载VFPGA到容器内,可以在容器内看到相应的设备描述符;
(3)当该容器不再需要使用VFPGA进行异构加速时,还可通过该挂载工具随时解绑,动态的把该VFPGA分配给其他容器使用。
本实施例使用从实体FPGA借由SR-IOV基础虚拟出来的VFPGA做为容器的外接设备,能够充分利用FPGA设备的性能,提高物理FPGA的性能使用率,同时可以有效加速容器内的应用或服务,提高PAAS平台对异构计算的支持。
因为情况复杂,无法一一列举进行阐述,本领域技术人员应能意识到根据本申请提供的基本方法原理结合实际情况可以存在很多的例子,在不付出足够的创造性劳动下,应均在本申请的保护范围内。
下面请参见图5,图5为本申请实施例提供的一种基于虚拟化的FPGA使用系统的结构框图,该基于虚拟化的FPGA使用系统可以包括:
SR-IOV虚拟化单元100,用于利用SR-IOV技术将单个FPGA虚拟为预设数量的VFPGA;
VFPGA分配及挂载单元200,用于为每个创建好的容器分别分配一个所述VFPGA,并将每个已被分配的VFPGA挂载至对应的容器上,以使每个所述容器通过挂载于自身的VFPGA执行后续操作。
进一步的,该基于虚拟化的FPGA使用系统还可以包括:
VFPGA命名单元,用于为每个所述VFPGA进行命名,得到各VFPGA ID;
VFGPA待分配池生成单元,用于统计各所述VFPGA ID,生成包含各所述VFPGA ID的VFGPA待分配池;
对应的,所述VFPGA分配及挂载单元200具体包括;
任一选取子单元,用于为每个创建好的容器分别从所述VFGPA待分配池中任选一个VFPGA ID;
分配子单元,用于将每个选取出的VFPGA ID对应的VFPGA分配给相应的容器。
进一步的,该基于虚拟化的FPGA使用系统还可以包括:
已分配标记附加及已分配VFPGA移出单元,用于为已分配给一个所述容器的VFPGA附加已分配标记,并将附加有所述已分配标记的VFPGA的VFPGA ID从所述VFGPA待分配池中移除。
进一步的,该基于虚拟化的FPGA使用系统还可以包括:
挂载关系解除及已分配标记去除单元,用于当目标容器不再需要挂载于自身的VFPGA时,解除目标VFPGA与所述目标容器间存在的挂载关系,并去除附加于所述目标VFPGA上的已分配标记,得到待分配VFPGA;其中,所述目标VFPGA为之前与所述目标容器间存在所述挂载关系的VFPGA;
待分配VFPGA池补充单元,用于将所述待分配VFPGA的VFPGA ID补充进所述VFPGA待分配池。
基于上述实施例,本申请还提供了一种FPGA,该FPGA可以包括存储器和处理器,其中,该存储器中存有计算机程序,该处理器调用该存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然,该FPGA还可以包括各种必要的网络接口、电源以及其它零部件等。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行终端或处理器执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种基于虚拟化的FPGA使用方法,其特征在于,包括:
利用SR-IOV技术将单个FPGA虚拟为预设数量的VFPGA;
为每个创建好的容器分别分配一个所述VFPGA,并将每个已被分配的VFPGA挂载至对应的容器上,以使每个所述容器通过挂载于自身的VFPGA执行后续操作。
2.根据权利要求1所述的FPGA使用方法,其特征在于,在为每个创建好的容器分别分配一个所述VFPGA之前,还包括:
为每个所述VFPGA进行命名,得到各VFPGA ID;
统计各所述VFPGA ID,生成包含各所述VFPGA ID的VFGPA待分配池;
对应的,为每个创建好的容器分别分配一个所述VFPGA具体包括;
为每个创建好的容器分别从所述VFGPA待分配池中任选一个VFPGA ID;
将每个选取出的VFPGA ID对应的VFPGA分配给相应的容器。
3.根据权利要求2所述的FPGA使用方法,其特征在于,在将每个选取出的VFPGA ID对应的VFPGA分配给相应的容器之后,还包括:
为已分配给一个所述容器的VFPGA附加已分配标记,并将附加有所述已分配标记的VFPGA的VFPGA ID从所述VFGPA待分配池中移除。
4.根据权利要求3所述的FPGA使用方法,其特征在于,还包括:
当目标容器不再需要挂载于自身的VFPGA时,解除目标VFPGA与所述目标容器间存在的挂载关系,并去除附加于所述目标VFPGA上的已分配标记,得到待分配VFPGA;其中,所述目标VFPGA为之前与所述目标容器间存在所述挂载关系的VFPGA;
将所述待分配VFPGA的VFPGA ID补充进所述VFPGA待分配池。
5.一种基于虚拟化的FPGA使用系统,其特征在于,包括:
SR-IOV虚拟化单元,用于利用SR-IOV技术将单个FPGA虚拟为预设数量的VFPGA;
VFPGA分配及挂载单元,用于为每个创建好的容器分别分配一个所述VFPGA,并将每个已被分配的VFPGA挂载至对应的容器上,以使每个所述容器通过挂载于自身的VFPGA执行后续操作。
6.根据权利要求5所述的FPGA使用系统,其特征在于,还包括:
VFPGA命名单元,用于为每个所述VFPGA进行命名,得到各VFPGA ID;
VFGPA待分配池生成单元,用于统计各所述VFPGA ID,生成包含各所述VFPGA ID的VFGPA待分配池;
对应的,所述VFPGA分配及挂载单元具体包括;
任一选取子单元,用于为每个创建好的容器分别从所述VFGPA待分配池中任选一个VFPGA ID;
分配子单元,用于将每个选取出的VFPGA ID对应的VFPGA分配给相应的容器。
7.根据权利要求6所述的FPGA使用系统,其特征在于,还包括:
已分配标记附加及已分配VFPGA移出单元,用于为已分配给一个所述容器的VFPGA附加已分配标记,并将附加有所述已分配标记的VFPGA的VFPGA ID从所述VFGPA待分配池中移除。
8.根据权利要求7所述的FPGA使用系统,其特征在于,还包括:
挂载关系解除及已分配标记去除单元,用于当目标容器不再需要挂载于自身的VFPGA时,解除目标VFPGA与所述目标容器间存在的挂载关系,并去除附加于所述目标VFPGA上的已分配标记,得到待分配VFPGA;其中,所述目标VFPGA为之前与所述目标容器间存在所述挂载关系的VFPGA;
待分配VFPGA池补充单元,用于将所述待分配VFPGA的VFPGA ID补充进所述VFPGA待分配池。
9.一种FPGA,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至4任一项所述的FPGA使用方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的FPGA使用方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810697707.0A CN108897601A (zh) | 2018-06-29 | 2018-06-29 | 一种基于虚拟化的fpga使用方法、系统及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810697707.0A CN108897601A (zh) | 2018-06-29 | 2018-06-29 | 一种基于虚拟化的fpga使用方法、系统及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108897601A true CN108897601A (zh) | 2018-11-27 |
Family
ID=64347129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810697707.0A Pending CN108897601A (zh) | 2018-06-29 | 2018-06-29 | 一种基于虚拟化的fpga使用方法、系统及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108897601A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109634720A (zh) * | 2018-12-13 | 2019-04-16 | 郑州云海信息技术有限公司 | 一种多虚拟机共享fpga板卡的方法、系统及装置 |
CN109634627A (zh) * | 2019-01-23 | 2019-04-16 | 郑州云海信息技术有限公司 | 基于OpenStack平台管理FPGA设备的方法 |
CN110597627A (zh) * | 2019-08-24 | 2019-12-20 | 中国电子科技集团公司第十五研究所 | 基于虚拟fpga的数据库运算加速装置及加速方法 |
CN111047505A (zh) * | 2019-12-20 | 2020-04-21 | 北京浪潮数据技术有限公司 | 一种gpu复用方法、装置、设备及可读存储介质 |
WO2021170055A1 (zh) * | 2020-02-28 | 2021-09-02 | 安徽寒武纪信息科技有限公司 | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5511217A (en) * | 1992-11-30 | 1996-04-23 | Hitachi, Ltd. | Computer system of virtual machines sharing a vector processor |
US20140245295A1 (en) * | 2013-02-26 | 2014-08-28 | Red Hat Israel, Ltd. | Providing Dynamic Topology Information in Virtualized Computing Environments |
CN105242957A (zh) * | 2015-09-28 | 2016-01-13 | 广州云晫信息科技有限公司 | 一种云计算系统调配gpu资源到虚拟机的方法及系统 |
CN105630607A (zh) * | 2015-12-23 | 2016-06-01 | 联想(北京)有限公司 | 一种资源池管理方法、容器创建方法及电子设备 |
CN106569877A (zh) * | 2016-11-14 | 2017-04-19 | 中国石油化工股份有限公司 | 一种虚拟机以直通方式共享使用图形工作站gpu的方法 |
CN107632878A (zh) * | 2017-09-27 | 2018-01-26 | 山东渔翁信息技术股份有限公司 | 一种密码卡算法资源的分配方法、系统及相关装置 |
US20180101486A1 (en) * | 2016-10-06 | 2018-04-12 | Vmware, Inc. | Automatic System Service Resource Management for Virtualizing Low-Latency Workloads that are Input/Output Intensive |
CN107924340A (zh) * | 2015-08-18 | 2018-04-17 | 日本电信电话株式会社 | 资源配置系统、资源配置方法以及资源配置程序 |
-
2018
- 2018-06-29 CN CN201810697707.0A patent/CN108897601A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5511217A (en) * | 1992-11-30 | 1996-04-23 | Hitachi, Ltd. | Computer system of virtual machines sharing a vector processor |
US20140245295A1 (en) * | 2013-02-26 | 2014-08-28 | Red Hat Israel, Ltd. | Providing Dynamic Topology Information in Virtualized Computing Environments |
CN107924340A (zh) * | 2015-08-18 | 2018-04-17 | 日本电信电话株式会社 | 资源配置系统、资源配置方法以及资源配置程序 |
CN105242957A (zh) * | 2015-09-28 | 2016-01-13 | 广州云晫信息科技有限公司 | 一种云计算系统调配gpu资源到虚拟机的方法及系统 |
CN105630607A (zh) * | 2015-12-23 | 2016-06-01 | 联想(北京)有限公司 | 一种资源池管理方法、容器创建方法及电子设备 |
US20180101486A1 (en) * | 2016-10-06 | 2018-04-12 | Vmware, Inc. | Automatic System Service Resource Management for Virtualizing Low-Latency Workloads that are Input/Output Intensive |
CN106569877A (zh) * | 2016-11-14 | 2017-04-19 | 中国石油化工股份有限公司 | 一种虚拟机以直通方式共享使用图形工作站gpu的方法 |
CN107632878A (zh) * | 2017-09-27 | 2018-01-26 | 山东渔翁信息技术股份有限公司 | 一种密码卡算法资源的分配方法、系统及相关装置 |
Non-Patent Citations (2)
Title |
---|
DUY VIET VU, OLIVER SANDER, TIMO SANDMANN, STEFFEN BAEHR, JAN HE: "Enabling Partial Reconfiguration for Coprocessors in Mixed Criticality Multicore Systems Using PCI Express Single-Root I/O Virtualization", 《IEEE XPLORE》 * |
王春海: "《VMware虚拟化与云计算 vSphere运维卷》", 31 January 2018, 中国铁道出版社 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109634720A (zh) * | 2018-12-13 | 2019-04-16 | 郑州云海信息技术有限公司 | 一种多虚拟机共享fpga板卡的方法、系统及装置 |
CN109634720B (zh) * | 2018-12-13 | 2021-11-19 | 郑州云海信息技术有限公司 | 一种多虚拟机共享fpga板卡的方法、系统及装置 |
CN109634627A (zh) * | 2019-01-23 | 2019-04-16 | 郑州云海信息技术有限公司 | 基于OpenStack平台管理FPGA设备的方法 |
CN109634627B (zh) * | 2019-01-23 | 2022-02-18 | 郑州云海信息技术有限公司 | 基于OpenStack平台管理FPGA设备的方法 |
CN110597627A (zh) * | 2019-08-24 | 2019-12-20 | 中国电子科技集团公司第十五研究所 | 基于虚拟fpga的数据库运算加速装置及加速方法 |
CN110597627B (zh) * | 2019-08-24 | 2023-07-14 | 中国电子科技集团公司第十五研究所 | 基于虚拟fpga的数据库运算加速装置及加速方法 |
CN111047505A (zh) * | 2019-12-20 | 2020-04-21 | 北京浪潮数据技术有限公司 | 一种gpu复用方法、装置、设备及可读存储介质 |
WO2021170055A1 (zh) * | 2020-02-28 | 2021-09-02 | 安徽寒武纪信息科技有限公司 | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108897601A (zh) | 一种基于虚拟化的fpga使用方法、系统及相关装置 | |
CN102971724B (zh) | 与数据中心环境内的基于单元式虚拟资源的管理有关的方法和装置 | |
CN106385329B (zh) | 资源池的处理方法、装置和设备 | |
US11740921B2 (en) | Coordinated container scheduling for improved resource allocation in virtual computing environment | |
CN109783229A (zh) | 线程资源分配的方法及装置 | |
CN103078965B (zh) | 虚拟机的ip地址管理方法 | |
TW201837733A (zh) | 一種區塊鏈共識方法、設備及系統 | |
CN105592110B (zh) | 一种资源调度方法及装置 | |
CN103593229A (zh) | 异构云操作系统的集成与统一调度框架及调度方法 | |
CN102520887A (zh) | 一种应用于云计算的存储空间配置与管理方法 | |
CN104539708A (zh) | 一种云平台资源的缩容方法、装置与系统 | |
CN109471725A (zh) | 资源分配方法、装置和服务器 | |
CN109800067A (zh) | 基于云监控的数据库连接优化方法、装置及相关设备 | |
CN112087332B (zh) | 一种云边协同下的虚拟网络性能优化系统 | |
CN112637304A (zh) | 一种跨云资源处理系统和资源管理方法 | |
CN108829523A (zh) | 内存资源分配方法、装置、电子设备及可读存储介质 | |
CN106250202B (zh) | 一种云平台自动化开通虚拟机的装置及方法 | |
CN111176829A (zh) | 虚拟化处理系统中的物理功能和虚拟功能的灵活资源分配 | |
CN109800261A (zh) | 双数据库连接池的动态控制方法、装置及相关设备 | |
CN111193802A (zh) | 基于用户组的资源动态分配方法、系统、终端及存储介质 | |
CN105469173A (zh) | 一种静态内存进行优化管理的方法 | |
CN106385330A (zh) | 一种网络功能虚拟化编排器的实现方法及装置 | |
CN109032982A (zh) | 一种数据处理方法、装置、设备、系统、fpga板卡及其组合 | |
CN108595259A (zh) | 一种基于全局管理的内存池管理方法 | |
CN106126319B (zh) | 中央处理器资源分配方法和计算节点 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181127 |
|
RJ01 | Rejection of invention patent application after publication |