程序的加载方法、装置、系统以及电子设备与流程

文档序号:17474718发布日期:2019-04-20 06:02阅读:181来源:国知局
程序的加载方法、装置、系统以及电子设备与流程

本发明涉及计算机技术领域,尤其涉及程序的加载方法、装置、系统以及电子设备。



背景技术:

在fpga(fieldprogrammablegatearray,现场可编程门阵列)云产品中,云服务提供商将物理机上的fpga,通过租用给用户的虚拟机(vm,virtualmachine)提供给用户使用,以便用户部署其fpga的处理逻辑。为了便于后续描述,将云服务提供商租用给用户的虚拟机称作用户虚拟机。

但是,基于系统安全的考虑,平台通常会对fpga进行安全隔离,限制用户虚拟机对fpga进行pr(部分重配置partialreconfiguration)操作。

在opencl(opencomputinglanguage,开放运算语言)的标准框架中,用户虚拟机中的opencl主机程序(openclhost程序)需要向fpga加载用户配置的opencl内核程序,从而才能实现用户在fpga上部署其需要的处理逻辑,向fpga加载opencl内核程序的过程就是对fpga进行pr操作的过程。显然在安全隔离的fpga云产品,运行用户虚拟机中的opencl主机程序无法直接进行加载opencl内核程序。

针对上述情况,在现有解决方案中,一种方案为:不采用上述安全隔离策略,允许用户虚拟机直接对fpga进行pr操作。该方案相当于缺少了安全隔离策略,显然会对系统的安全性造成严重影响。

另一种方案为:在采用上述安全隔离策略的情况下,关闭opencl主机程序中默认的加载opencl内核程序,采用外部非标准程序对fpga进行pr操作,从而实现向fpga中加载opencl内核程序。这样的解决方案需要运行非标准的外部程序,本身流程就比较繁琐并且也存在安全隐患。此外,由于采用了非标准程序对fpga进行pr操作,往往会出现用户想要加载的opencl内核程序和实际向fpga进行pr操作的bitstream(码流)文件并不匹配,从而影响了用户对fpga功能的使用。



技术实现要素:

本发明实施例提供了一种opencl内核程序的加载方法、装置、系统以及电子设备,在满足现有的安全隔离策略和兼容opencl标准框架的前提下,实现opencl内核程序的加载。

为达到上述目的,本发明的实施例采用如下技术方案:

第一方面,提供了一种opencl内核程序的加载方法,包括:

硬件抽象层模块向bitstream管理模块发送请求向fpga中加载opencl内核程序的加载请求,并将所述opencl内核程序发送给所述bitstream管理模块;

所述bitstream管理模块对所述opencl内核程序进行安全检查,如果所述opencl内核程序通过所述安全检查,则向fpga管理模块提供所述opencl内核程序;

所述fpga管理模块向fpga加载所述opencl内核程序。

第二方面,提供了一种opencl内核程序的加载系统,包括硬件抽象层模块、bitstream管理模块以及fpga管理模块,

所述硬件抽象层模块,用于向bitstream管理模块发送请求向fpga中加载opencl内核程序的加载请求,并将所述opencl内核程序发送给所述bitstream管理模块;

所述bitstream管理模块,用于对所述opencl内核程序进行安全检查,如果所述opencl内核程序通过所述安全检查,则向所述fpga管理模块提供所述opencl内核程序;

所述fpga管理模块,用于向fpga加载所述opencl内核程序。

第三方面,提供了一种opencl内核程序的加载控制装置,包括:

第一控制单元,用于控制硬件抽象层模块向bitstream管理模块发送请求向fpga中加载opencl内核程序的加载请求,并将所述opencl内核程序发送给所述bitstream管理模块,

第二控制单元,用于控制所述bitstream管理模块对所述opencl内核程序进行安全检查,如果所述opencl内核程序通过所述安全检查,则向fpga管理模块提供所述opencl内核程序;

第三控制单元,用于控制所述fpga管理模块向fpga加载所述opencl内核程序。

第四方面,提供了一种电子设备,包括:

存储器,用于存储程序;

处理器,耦合至所述存储器,用于执行所述程序,以用于:

控制硬件抽象层模块向bitstream管理模块发送请求向fpga中加载opencl内核程序的加载请求,并将所述opencl内核程序发送给所述bitstream管理模块;

控制所述bitstream管理模块对所述opencl内核程序进行安全检查,如果所述opencl内核程序通过所述安全检查,则向所述fpga管理模块提供所述opencl内核程序;

控制所述fpga管理模块向fpga加载所述opencl内核程序。

本发明实施例提供的opencl内核程序的加载方法、装置、系统以及电子设备,在opencl标准框架下,通过硬件抽象层模块先将opencl内核程序发送给bitstream管理模块进行安全检查,然后再由硬件抽象层模块来指示fpga管理模块向fpga中加载opencl内核程序,有效地实现了fpga的安全隔离,并且在兼容opencl标准框架的前提下,实现了向fpga中加载opencl内核程序。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明实施例的与加载opencl内核程序相关的云平台系统的应用场景示意图。

图2为本发明实施例的opencl内核程序的加载方法的流程示意图。

图3为本发明实施例的opencl内核程序的加载系统的结构示意图。

图4为本发明实施例的opencl内核程序的加载控制装置的结构示意图。

图5为本发明实施例提供的电子设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本发明实施例在兼容opencl标准框架和fpga的安全隔离机制的前提下,实现向fpga中加载opencl内核程序。如图1所示,其为本发明实施例的与加载opencl内核程序相关的云平台系统的应用场景示意图,该图中的各个模块也是opencl标准框架下的功能模块。在本发明实施例中,主要是通过硬件抽象层模块、bitstream(码流)管理模块以及fpga管理模块的交互机制的改进来完成opencl内核程序的加载流程。

图1中的用户虚拟机是指云服务提供商租用给用户的虚拟机,用户可以根据自己的需求对该虚拟机进行配置。在该用户虚拟机中,用户可以根据其需求配置opencl主机程序。该opencl主机程序主要用于:向fpga中加载用户提供的opencl内核程序,以及在完成向pfga中opencl内核程序加载后,发起对fpga的调用,执行与opencl内核程序对应的逻辑功能。当用户运行opencl主机程序后,会在用户虚拟机中产生基于opencl主机程序的进程或者程序实例,在本发明实施例中,将其称为opencl主机程序模块,通过该opencl主机程序模块的运行会调用硬件抽象层模块,从而触发硬件抽象层模块发起向fpga中加载opencl内核程序的流程。

这里所说的向fpga中加载opencl内核程序的流程也就是pr操作。在向fpga中完成opencl内核程序加载后,用户就可以通过opencl主机程序模块和硬件抽象层模块来控制fpga执行与加载的opencl内核程序对应的逻辑处理。

在安全隔离机制下,硬件抽象层模块与fpga之间是有安全隔离限制的,硬件抽象层模块可以与fpga进行通信,但是硬件抽象层模块是不能对fpga进行pr操作。在本发明实施例中,硬件抽象层模块将opencl内核程序加载请求以及opencl内核程序发送给bitstream管理模块,bitstream管理模块进行安全检查后,指示具有对fpga有pr权限的fpga管理模块执行opencl内核程序的加载处理。

通过这样的机制,一方面仍然保持了用户虚拟机与fpga的安全隔离状态,另一方面,通过bitstream管理模块完成了相应的安全检查,在保证了opencl内核程序的安全性后,再通过fpga管理模块执行最终的pr操作。通过这样的机制,在兼容了opencl标准框架并且没有fpga的安全隔离机制的前提下,完成了opencl内核程序的加载。

此外,需要说明的是,在实际的云平台系统中,会存在多个nc(图中的其他nc中也包含上述的fpga管理模块、bitstream管理模块以及硬件抽象层模块等结构,图中仅以省略号示出),每个nc上都设置有与其对应的fpga(每个nc上设置的fpga可以是一块也可以是多块),而每个nc中配置有多个为用户配置的用户虚拟机。各个nc中的各个用户虚拟机中的opencl内核程序都统一由bitstream管理模块来进行管理,该bitstream管理模块可以是独立的服务器,也可以是设置在某个nc中的专门用于配置该bitstream管理模块的虚拟机中。

下面通过几个具体实施例来进一步说明本发明的技术方案

实施例一

如图2所示,其为本发明实施例的opencl内核程序的加载方法的流程示意图。该方法包括:

s101:硬件抽象层模块向bitstream管理模块发送请求向fpga中加载opencl内核程序的加载请求,并将opencl内核程序发送给bitstream管理模块。

在该步骤中,用户发起opencl内核程序的加载请求是通过在用户虚拟机中运行opencl主机程序模块来实现的,用户可以通过在其云端的用户虚拟机中配置opencl主机程序,并通过运行opencl主机程序来产生opencl主机程序模块(该opencl主机程序模块也是一个进程或者一个实例),从而来发起加载opencl内核程序的流程。因此,该步骤s101可以具体为硬件抽象层模块接受用户虚拟机中的opencl主机程序模块的调用,而触发向bitstream管理模块发送请求向fpga中加载opencl内核程序的加载请求。

此外,鉴于在opencl标准框架下,用户运行opencl主机程序的同时必然会发起opencl内核程序的加载请求(即使在opencl内核程序已经完成加载后,用户再次运行opencl主机程序来调用fpga中相应逻辑进行数据处理时,仍然会触发opencl内核程序加载流程)。因此,在该步骤中,硬件抽象层模块向bitstream管理模块发送完opencl内核程序的加载请求后,可以等待bitstream管理模块执行重复检查,待bitstream管理模块确认待加载的opencl内核程序没有重复后,再通知硬件抽象层模块发送opencl内核程序。其中,每个opencl内核程序都有与其对应的唯一的标识信息,bitstream管理模块在加载完opencl内核程序后,会记录该标识信息。在上述硬件抽象层模块向bitstream管理模块发送的加载请求中,可以包含该标识信息,从而让bitstream管理模块进行判断该opencl内核程序是否已经加载了。

s102:bitstream管理模块对opencl内核程序进行安全检查,如果opencl内核程序通过安全检查,则向fpga管理模块提供opencl内核程序。

如前面所说,bitstream管理模块会管理多个nc中的用户虚拟机中的opencl内核程序的加载过程,为了便于bitstream管理模块与各个nc中的fpga管理模块的交互,bitstream管理模块可以采用任务模式来与fpga管理模块进行交互,来完成opencl内核程序的加载。

具体地,如果opencl内核程序通过bitstream管理模块的安全检查,则bitstream管理模块生成针对该opencl内核程序的加载任务。各个nc中的fpga管理模块通过轮询机制从bitstream管理模块获取加载任务和与该任务对应的opencl内核程序。

此外,如前面所说明的,bitstream管理模块除了进行安全检查外,还对opencl内核程序是否已经加载进行判断,从而避免重复加载的情形出现。具体地,bitstream管理模块根据加载请求中包含的标识信息,检查该标识信息对应的opencl内核程序是否已经被加载,如果已经被加载,则向硬件抽象层模块返回opencl内核程序加载完成的第三通知消息,如果没有被加载,则要求fpga管理模块提供opencl内核程序。硬件抽象层模块在收到该第三通知消息后,就不用再向bitstream管理模块发送opencl内核程序了,从而避免了重复加载的问题。

s103:fpga管理模块向fpga加载opencl内核程序。在opencl标准框架下,fpga管理模块拥有对fpga进行pr的权利,当fpga管理模块获取到上述的经过安全检查的opencl内核程序后,就可以向fpga执行pr操作。在完成pr操作后,即完成opencl内核程序的加载后,可以向bitstream管理模块发送opencl内核程序加载完成的第一通知消息。bitstream管理模块在收到该第一通知消息后,可以将opencl内核程序的标识信息进行记录,以用于前面提到的避免重复加载opencl内核程序的判断。

此外,bitstream管理模块在收到该第一通知消息可以通知硬件抽象层模块其请求加载的opencl内核程序已经加载完成。具体的,如前面所说,由于bitstream管理模块会管理多个nc中的多个用户虚拟机中的opencl内核程序的加载过程,为了便于bitstream管理模块与各个硬件抽象层模块的交互,各个硬件抽象层模块可以通过轮询的方式向bitstream管理模块查询opencl内核程序的加载情况。

当硬件抽象层模块查询到opencl内核程序完成加载的结果后,硬件抽象层模块可以再向opencl主机程序模块发送opencl内核程序加载完成的第二通知消息,从而使得用户得知其配置的opencl内核程序已经加载到了fpga中。

本发明实施例提供的opencl内核程序的加载方法,在opencl标准框架下,通过对硬件抽象层模块、bitstream管理模块以及fpga管理模块之间的交互关系进行改进,在兼容opencl标准框架以及安全隔离机制的前提下,实现了向fpga中加载opencl内核程序。

实施例二

如图3所示,其为本发明实施例的opencl内核程序的加载系统的结构示意图,在本发明实施例中通过对已有的opencl标准框架中涉及的各个功能模块的在交互关系方面的功能性改进,来完成opencl内核程序的加载。具体地,本实施例的opencl内核程序的加载系统包括硬件抽象层模块31、bitstream管理模块32以及fpga管理模块33,在本实施例中,各个模块的功能如下:

1)硬件抽象层模块31:用于向bitstream管理模块32发送请求向fpga中加载opencl内核程序的加载请求,并将opencl内核程序发送给bitstream管理模块。

其中,如前述实施例所说明的,用户是通过运行在用户虚拟机中的opencl主机程序模块来调用硬件抽象层模块而触发加载opencl内核程序的加载流程的。硬件抽象层模块的上述功能可以具体为接受用户虚拟机中的opencl主机程序模块的调用,而触发向bitstream管理模块发送请求向fpga中加载opencl内核程序的加载请求。

2)bitstream管理模块32:用于对opencl内核程序进行安全检查,如果opencl内核程序通过安全检查,则向fpga管理模块33提供opencl内核程序。

如前面所说,bitstream管理模块可以采用任务模式来与fpga管理模块进行交互,来完成opencl内核程序的加载。具体地,如果opencl内核程序通过bitstream管理模块的安全检查,则bitstream管理模块生成针对该opencl内核程序的加载任务。各个nc中的fpga管理模块通过轮询机制从bitstream管理模块获取加载任务和与该任务对应的opencl内核程序。

此外,bitstream管理模块除了进行安全检查外,还对opencl内核程序是否已经加载进行判断,从而避免重复加载的情形出现。

具体地,每个opencl内核程序对应有唯一的标识信息,上述加载请求中包含该标识信息,bitstream管理模块可以对加载完成的opencl内核程序的标识信息进行记录。

bitstream管理模块在收到硬件抽象层模块发送的加载opencl内核程序的加载请求后,根据加载请求中包含的标识信息,检查该标识信息对应的opencl内核程序是否已经被加载,如果已经被加载,则向硬件抽象层模块返回opencl内核程序加载完成的第三通知消息,如果没有被加载,则要求fpga管理模块提供opencl内核程序。硬件抽象层模块在收到该第三通知消息后,就不用再向bitstream管理模块发送opencl内核程序了,从而避免了重复加载的问题。

3)fpga管理模块33:用于向fpga加载opencl内核程序。

进一步地,fpga管理模块可以在向fpga加载opencl内核程序后,向bitstream管理模块发送opencl内核程序加载完成的第一通知消息。bitstream管理模块在获知了opencl内核程序加载完成的消息后,可以用于后续的opencl内核程序是否已经被加载的判定处理,也可以通知硬件抽象层模块该opencl内核程序已经完成加载,从而使得硬件抽象层模块也能够将该opencl内核程序已经完成加载的结果通知opencl主机程序模块,以使得用户能够获知该加载完成的结果。

具体地,上述硬件抽象层模块可以通过轮询的方式向bitstream管理模块查询opencl内核程序的加载情况,当查询到opencl内核程序完成加载的结果后,向opencl主机程序模块发送opencl内核程序加载完成的第二通知消息。

综上所述,本发明实施例提供的opencl内核程序的加载系统,在opencl标准框架下,通过对硬件抽象层模块、bitstream管理模块以及fpga管理模块功能上的进行改进,在兼容opencl标准框架以及安全隔离机制的前提下,实现了向fpga中加载opencl内核程序。

此外,关于本实施例中的加载系统的各个功能模块的详细功能说明以及技术效果等内容在前述实施例中已经进行了充分描述,其内容仍然适用于本实施例,在此不再赘述。

实施例三

如图4所示,其为本发明实施例的opencl内核程序的加载控制装置的结构示意图,其包括分别对硬件抽象层模块、bitstream管理模块以及fpga管理模块执行控制操作的第一控制单元41、第二控制单元42以及第三控制单元43,其中各个控制单元所执行的控制处理如下:

1)第一控制单元41:用于控制硬件抽象层模块向bitstream管理模块发送请求向fpga中加载opencl内核程序的加载请求,并将opencl内核程序发送给bitstream管理模块。

其中,该第一控制单元41可以具体用于控制硬件抽象层模块接受用户虚拟机中的opencl主机程序模块的调用,而触发向bitstream管理模块发送请求向fpga中加载opencl内核程序的加载请求。

2)第二控制单元42:用于控制bitstream管理模块对opencl内核程序进行安全检查,如果opencl内核程序通过安全检查,则向fpga管理模块提供opencl内核程序。

其中,该第二控制单元42还可以用于控制bitstream管理模块,在硬件抽象层模块向bitstream管理模块发送请求向fpga中加载opencl内核程序的加载请求后,执行如下处理:

bitstream管理模块根据加载请求中包含的标识信息,检查该标识信息对应的opencl内核程序是否已经被加载,如果已经被加载,则向硬件抽象层模块返回opencl内核程序加载完成的第三通知消息,如果没有被加载,则要求fpga管理模块提供opencl内核程序。

此外,第二控制单元42还可以控制bitstream管理模块采用任务模式来与fpga管理模块进行交互,来完成opencl内核程序的加载。具体地,第二控制单元42可以控制bitstream管理模块在opencl内核程序通过bitstream管理模块的安全检查的情况下,生成针对该opencl内核程序的加载任务。第三控制单元43可以控制fpga管理模块通过轮询机制从bitstream管理模块获取加载任务和与该任务对应的opencl内核程序。

3)第三控制单元43:用于控制fpga管理模块向fpga加载opencl内核程序。此外,第三控制单元43还可以控制fpga管理模块在向fpga加载opencl内核程序后,向bitstream管理模块发送opencl内核程序加载完成的第一通知消息。

相应地,上述第二控制单元42可以控制bitstream管理模块在获知了opencl内核程序加载完成的第一消息后,记录该opencl内核程序对应的标识信息,以用于后续的opencl内核程序是否已经被加载的判定处理,也可以控制bitstream管理模块在获知了opencl内核程序加载完成的第一消息后,通知硬件抽象层模块该opencl内核程序已经完成加载,进而使得硬件抽象层模块也能够将该opencl内核程序已经完成加载的结果通知opencl主机程序模块,以使得用户能够获知该加载完成的结果。

具体地,第一控制单元41可以控制上述硬件抽象层模块通过轮询的方式向bitstream管理模块查询opencl内核程序的加载情况,当查询到opencl内核程序完成加载的结果后,向opencl主机程序模块发送opencl内核程序加载完成的第二通知消息。

综上所述,本发明实施例提供的opencl内核程序的加载装置,在opencl标准框架下,通过对硬件抽象层模块、bitstream管理模块以及fpga管理模块的控制处理,在兼容opencl标准框架以及安全隔离机制的前提下,实现了向fpga中加载opencl内核程序。

此外,关于本实施例加载控制装置所涉及的opencl标准框架下的各个功能模块的详细功能说明以及技术效果等内容在前述实施例中已经进行了充分描述,其内容仍然适用于本实施例,在此不再赘述。

实施例四

前面实施例三描述了opencl内核程序的加载控制装置的结构,该装置的功能可借助一种电子设备实现完成,如图5所示,其为本发明实施例的电子设备的结构示意图,具体包括:存储器510和处理器520。

存储器510,用于存储程序。

除上述程序之外,存储器510还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器510可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

处理器520,耦合至存储器510,用于执行存储器510中的程序,以用于:

控制硬件抽象层模块向bitstream管理模块发送请求向fpga中加载opencl内核程序的加载请求,并将opencl内核程序发送给bitstream管理模块;

控制bitstream管理模块对opencl内核程序进行安全检查,如果opencl内核程序通过安全检查,则向fpga管理模块提供opencl内核程序;

控制fpga管理模块向fpga加载opencl内核程序。

此外,上述实施例三中的其他控制操作也可以以程序的形式存储于存储器510中并被处理器520读取执行。详细的控制处理在实施例四中已经进行详细说明,其同样适用于本实施例,在此不再赘述。

进一步,如图5所示,电子设备还可以包括:通信组件530、电源组件540、音频组件550、显示器560等其它组件。图5中仅示意性给出部分组件,并不意味着电子设备只包括图5所示组件。

通信组件530被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件530经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件530还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

电源组件540,为电子设备的各种组件提供电力。电源组件540可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件550被配置为输出和/或输入音频信号。例如,音频组件550包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器510或经由通信组件530发送。在一些实施例中,音频组件550还包括一个扬声器,用于输出音频信号。

显示器560包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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