一种支持虚拟机内更新FPGA功能的系统,方法,设备及存储介质与流程

文档序号:19417851发布日期:2019-12-14 01:06阅读:278来源:国知局
一种支持虚拟机内更新FPGA功能的系统,方法,设备及存储介质与流程

本发明涉及云计算技术领域,尤其涉及一种支持虚拟机内更新fpga功能的系统,方法,设备及存储介质。



背景技术:

云计算是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。用户无需购买硬件,只须把需求(处理器和主存容量、以及设备类型和个数等),反馈给云服务供应商csp(cloudserviceprovider)。csp则基于用户的需求创建相应的虚拟机,用户的所有操作都可在虚拟机中进行,以实现快速部署和安全隔离。

对于一些人工智能、大数据处理等计算能力需求较高的应用场景,用户会要求机器配备fpga或gpu等异构计算设备,以获得更强的计算能力。其中fpga凭借其低能耗、可编程、高性价比等特性,已逐渐被csp关注并安装到云服务器中。通常上述应用场景对延迟比较敏感,外加fpga虚拟化技术尚不成熟,目前csp向客户提供fpga计算服务的形式是把fpga设备透传给虚拟机,在虚拟机内可直接操控设备,降低了延迟。

fpga设备的一大特性在于其可编程性,即通过下载不同功能的工程文件使fpga设备具备不同的功能。当前有两种方式实现功能的动态配置,1)一种是部分重配置pr(partialreconfiguration),此种方式要求把fpga工程文件强制分为两部分,基础单元和功能单元。每次动态配置时仅替换功能单元。另外,为执行pr须满足当前设备已存在fpga工程中的基础单元与即将下载工程文件中的基础单元完全一致,否则不执行pr,要求比较严格。2)另一种是全芯片烧写(full-chipprogramming),不对fpga工程文件做划分,由于没有限制,通常得到的fpga工程文件具有较好的性能。但其动态配置时依赖服务器主板与板卡之间存在一条下载线。

目前,在虚拟机内通常仅能通过pr方式进行fpga功能更新。但在某些情况下,比如不满足执行pr的条件或需要更换fpga工程中的基础单元,则需要通过执行全芯片烧写方式实现fpga功能更新。因此如何解决在虚拟机环境下通过全芯片烧写方式实现fpga功能更新,是当前亟待解决的技术问题。



技术实现要素:

本发明为解决在虚拟机环境下通过全芯片烧写方式实现fpga功能更新,提出了一种支持虚拟机内更新fpga功能的系统,包括:fpga设备,主机和虚拟机;

虚拟机设有命令寄存器和状态寄存器;

主机包括:连接状态控制模块,烧写模块以及状态写入模块;

连接状态控制模块用于控制fpga设备与虚拟机之间通信连接的通断;

烧写模块用于读取命令寄存器的烧写fpga命令,判断fpga设备与虚拟机是否断开通信连接,如果断开通信连接,则执行烧写进程;

状态写入模块用于获取烧写进程信息,并将烧写进程信息写入状态寄存器。

进一步需要说明的是,虚拟机还设有共享储存器;

共享储存器用于储存待烧写的fpga文件;

烧写模块还用于从共享储存器读取待烧写的fpga文件,执行烧写进程。

进一步需要说明的是,还包括:配置模块,辨识模块,烧写可执行模块;

配置模块用于在系统中配置虚拟机信息,系统中包括至少一个虚拟机;

辨识模块用于辨识每个虚拟机的属性信息,系统中每个虚拟机的执行级别;

烧写可执行模块用于对系统中每个虚拟机上部署虚拟属性签名,虚拟属性签名使主机能够与虚拟机的虚拟属性签名相匹配,匹配后主机对虚拟机进行操作。

进一步需要说明的是,配置模块还用于配置虚拟机的执行级别;还用于将烧写任务分配到主机,且将虚拟属性签名匹配到主机中,所述虚拟属性签名具有与烧写任务相适配的执行级别。

本发明还提供一种支持虚拟机内更新fpga功能的方法,方法包括:

连接状态控制模块控制fpga设备与虚拟机之间通信连接的通断;

烧写模块读取命令寄存器的烧写fpga命令,判断fpga设备与虚拟机是否断开通信连接,如果断开通信连接,则执行烧写进程;

状态写入模块获取烧写进程信息,并将烧写进程信息写入状态寄存器。

进一步需要说明的是,方法还包括:

烧写模块从共享储存器读取待烧写的fpga文件,执行烧写进程

进一步需要说明的是,方法还包括:

在系统中,配置虚拟机信息,系统中包括至少一个虚拟机;

辨识模块辨识每个虚拟机的属性信息,系统中每个虚拟机的执行级别;

烧写可执行模块对系统中每个虚拟机上部署虚拟属性签名,虚拟属性签名使主机能够与虚拟机的虚拟属性签名相匹配,匹配后主机对虚拟机进行操作。

进一步需要说明的是,方法还包括:

配置模块配置虚拟机的执行级别;还用于将烧写任务分配到主机,且将虚拟属性签名匹配到主机中,所述虚拟属性签名具有与烧写任务相适配的执行级别。

本发明还提供一种实现支持虚拟机内更新fpga功能的方法的设备,包括:

存储器,用于存储计算机程序及支持虚拟机内更新fpga功能的方法;

处理器,用于执行所述计算机程序及支持虚拟机内更新fpga功能的方法,以实现支持虚拟机内更新fpga功能的方法的步骤。

本发明还提供一种具有支持虚拟机内更新fpga功能的方法的计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行以实现支持虚拟机内更新fpga功能的方法的步骤。

从以上技术方案可以看出,本发明具有以下优点:

本发明连接状态控制模块控制fpga设备与虚拟机之间通信连接的通断;烧写模块读取命令寄存器的烧写fpga命令,判断fpga设备与虚拟机是否断开通信连接,如果断开通信连接,则执行烧写进程;状态写入模块获取烧写进程信息,并将烧写进程信息写入状态寄存器。这样系统把命令以及状态信息传递和数据传输集于一体,提升的数据传输效率。把虚拟机的储存空间设定为共享储存器,虚拟机与主机间传输数据不存在复制开销。主机端在执行全芯片烧写fpga之前,先移除虚拟机中的设备,防止系统报错,影响系统使用。

附图说明

为了更清楚地说明本发明的技术方案,下面将对描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为支持虚拟机内更新fpga功能的系统示意图;

图2为支持虚拟机内更新fpga功能的方法流程图。

具体实施方式

本发明的图1是支持虚拟机内更新fpga功能的系统示意图。示例性系统可以包括用于执行烧写任务的主机1以及多个虚拟机2,虚拟机2连接有fpga设备3。

可在虚拟机内驻留和/或执行。如本文所用,术语“虚拟机”通常是指由虚拟机根据本发明的方案,示例性系统的全部或一部分可以在虚拟环境内实现。例如,本文所述的模块和/或数据管理器(例如,超级管理程序)从计算硬件中提取出来的任何操作系统环境。

如下文将更详细地说明,示例性系统中,虚拟机2设有命令寄存器和状态寄存器;此外,示例性系统中,主机1包括:连接状态控制模块,烧写模块以及状态写入模块;连接状态控制模块用于控制fpga设备与虚拟机之间通信连接的通断;烧写模块用于读取命令寄存器的烧写fpga命令,判断fpga设备与虚拟机是否断开通信连接,如果断开通信连接,则执行烧写进程;状态写入模块用于获取烧写进程信息,并将烧写进程信息写入状态寄存器。

此外,并且如下文将更详细地说明,示例性系统可包括虚拟机还设有共享储存器;共享储存器用于储存待烧写的fpga文件;烧写模块还用于从共享储存器读取待烧写的fpga文件,执行烧写进程。

示例性系统为在虚拟机环境下通过全芯片烧写方式实现fpga功能更新,虚拟机端首先把下载的fpga工程文件传输到主机端,然后向主机端下发动态配置fpga的命令,然后轮询等待命令执行的状态。主机端收到配置fpga的命令后,把收到的fpga工程文件通过全芯片烧写方式对fpga设备进行配置,并把操作的结果(成功或失败)告知给虚拟机。虚拟机端基于收到的状态信息判定成功或失败。

示例性系统中,借助虚拟机中的pci设备的两个bar空间传输信息,1)其中bar0为寄存器空间类型,虚拟机端可对其读写,此读写请求及其传递的数据会被主机端截获,进而交给主机端请求处理模块。在bar0中设置了两个寄存器,命令寄存器cmd和状态寄存器status。虚拟机端通过对命令寄存器cmd写数据,向主机端传输执行全芯片烧写fpga的命令。主机端会把命令执行的结果写到状态寄存器status,虚拟机端通过读取状态status寄存器获知命令执行的结果。2)其中bar2为共享内存类型,其映射为主机端一段共享内存。主机端和设备端都可以读写这段共享内存,虚拟机端通过向这段空间写入fpga工程文件的内容,以实现向主机端传输fpga工程文件,中间不需要任何复制。

示例性系统中,主机收到全芯片烧写fpga的命令后,须首先把fpga设备从当前虚拟机内移除,然后再执行全芯片烧写fpga的命令,基于命令的执行结果,置status状态位,告知虚拟机。若成功,最后还需要把fpga设备再添加到对应的虚拟机中。之所以在执行全芯片烧写fpga命令之前,先移除fpga设备,是因为直接烧写fpga设备,虚拟机端会感知到设备异常,会导致虚拟机系统崩溃。

虚拟机端硬件层包含用于传输数据以及命令和状态信息的pci设备,虚拟机端用户层包含fpga烧写程序,其利用pci设备驱动可对pci设备的bar空间进行读写,进而向主机端传输数据、下发命令以及读取状态。

当下发命令以及读取状态时,读写请求会被主机端的虚拟机监控器所截获,然后虚拟机监控器把信息传递给主机端的请求处理模块。

主机端的请求处理模块收到虚拟机监控器传递的全芯片烧写fpga命令后,首先把fpga设备从虚拟机内移除,然后执行烧写fpga命令,并把命令的结果写到状态寄存器。若执行命令的结果是成功,则再把设备添加到对应虚拟机中。

示例性系统中,涉及了配置模块,辨识模块,烧写可执行模块;配置模块用于在系统中配置虚拟机信息,系统中包括至少一个虚拟机;辨识模块用于辨识每个虚拟机的属性信息,系统中每个虚拟机的执行级别;烧写可执行模块用于对系统中每个虚拟机上部署虚拟属性签名,虚拟属性签名使主机能够与虚拟机的虚拟属性签名相匹配,匹配后主机对虚拟机进行操作。

配置模块配置了每个虚拟机配置了属性信息后,同时配置了部署虚拟属性签名。使每个虚拟机均具有独立唯一的属性信息及虚拟属性签名。需要进行烧写操作时,需要上传属性信息及虚拟属性签名。

在某些实施方案中,上述涉及的模块中的一者或多者可表示一个或多个软件应用程序或程序,其在由计算设备执行时可致使计算设备执行一个或多个任务。例如,并且如将在下文更详细地描述的,模块中的一者或多者可以表示被存储并且被配置为在一个或多个计算设备上运行的模块,这些模块可以由虚拟机,主机,服务器等等执行操作。还可表示被配置为执行一个或多个烧写任务。

示例性系统中涉及的主机及虚拟机,还可以包括一个或多个存储设备,诸如存储器。存储设备通常表示能够存储数据和/或计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。在一个示例中,存储设备可以存储、加载各个模块中的一个或多个。存储设备包括但不限于随机存取存储器(ram)、只读存储器(rom)、闪存存储器、硬盘驱动器(hdd)、固态驱动器(ssd)、光盘驱动器、高速缓存、上述一个或多个的变体或组合、或任何其他合适的存储器。

依据虚拟机的属性信息,用途信息等等配置虚拟机信息。虚拟属性签名通常表示用于证明虚拟机的身份的任何类型或形式的信息。使得主机能够在系统中,识别出该虚拟机,以及使主机能够基于分配的烧写任务信息,与虚拟机进行匹配,匹配成功及执行烧写。

执行级别通常表示对虚拟机的可信度、运行状况或信息安全状态的任何量化或评估。在一些实施方案中,执行级别可基于安全特性虚拟机重要程度,虚拟机当前运行状态等等进行分析处理。还涉及虚拟机所匹配连接的fpga设备存储数据的重要性了进行安全分析评估。如果安全保护性较高,需要将fpga设备的信息进行备份,备份后进行烧写。

示例性系统可以以各种方式实现。例如,配置模块可使主机识别需要烧写的虚拟机,再进行匹配,匹配成功后进行烧写操作。或者可以基于虚拟机提成烧写操作来进行。或者基于系统的需求来进行烧写。

本发明还提供一种实现支持虚拟机内更新fpga功能的方法的设备,包括:存储器,用于存储计算机程序及支持虚拟机内更新fpga功能的方法;处理器,用于执行所述计算机程序及支持虚拟机内更新fpga功能的方法,以实现支持虚拟机内更新fpga功能的方法的步骤。

设备是表示能够执行数据处理的任何类型或形式的计算设备。在一些示例中,主机与虚拟机通信,系统在主机与虚拟机上部署虚拟属性签名。设备包括但不限于存储服务器、数据库服务器、应用程序服务器和/或web服务器,其被配置为运行某些软件应用程序和/或提供各种存储、数据库和/或web服务。

主机与虚拟机通信网络通常表示能够促进通信或数据传送的任何介质或架构。在一个示例中,网络可促进主机与虚拟机之间的通信。在该示例中,网络可使用无线或有线连接促进通信和/或数据传送。网络的示例包括但不限于:内联网、广域网(wan)、局域网(lan)、个人区域网(pan)、互联网、电力线通信(plc)、蜂窝网络(例如,全球移动通信系统(gsm)网络)、上述一者或多者的部分、上述一者或多者的变体或组合、或任何其他合适的网络。

本发明还提供一种具有支持虚拟机内更新fpga功能的方法的计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行以实现如支持虚拟机内更新fpga功能的方法的步骤。术语“计算机可读介质”通常是指能够存储或携带计算机可读指令的任何形式的设备、载体或介质。计算机可读介质的示例包括但不限于传输型介质,诸如载波,和非暂态型介质,诸如磁存储介质(例如,硬盘驱动器、磁带驱动器和软盘)、光存储介质(例如,光盘(cd)、数字视频盘(dvd)、blu-ray磁盘)、电子存储介质(例如,固态驱动器和闪存介质)和其他分配系统。

本发明还提供一种支持虚拟机内更新fpga功能的方法,方法包括:

连接状态控制模块控制fpga设备与虚拟机之间通信连接的通断;

烧写模块读取命令寄存器的烧写fpga命令,判断fpga设备与虚拟机是否断开通信连接,如果断开通信连接,则执行烧写进程;

状态写入模块获取烧写进程信息,并将烧写进程信息写入状态寄存器。

用于执行支持虚拟机内更新fpga功能的方法的流程图2。图2中所示的步骤可以由任何合适的计算机可执行代码和/或计算系统执行,包括图1中的系统、图2中的系统和/或以上项中的一者或多者的变型或组合。在一个示例中,图2中示出的每个步骤可以表示其结构包括和/或由多个子步骤表示的算法,其示例将在下文更详细地提供。

本发明中术语虚拟属性签名通常是指用于确定虚拟机的身份的任何类型或形式的电子凭据。在一些示例中,虚拟属性签名可通过用私有加密密钥(例如,仅该设备或可信的第三方知道的加密密钥)对与设备关联的签名进行加密来断言设备的身份。这样,可以是主机,或系统其他服务器验证提供证书的设备的身份的另一设备可以使用对应于私有加密密钥的公共加密密钥来解密签名。在验证完成之后,可使虚拟机和设备之间建立安全的加密通信信道。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1