更新硬件库以供具有fpga协处理器的计算机系统上的应用使用的制作方法

文档序号:6504537阅读:225来源:国知局
更新硬件库以供具有fpga协处理器的计算机系统上的应用使用的制作方法
【专利摘要】本发明涉及更新硬件库以供具有FPGA协处理器的计算机系统上的应用使用。一种计算机系统包括一个或多个现场可编程门阵列作为协作处理器,其可以在进程间共享并使用硬件库被编程。在给定一组硬件库的情况下,更新进程周期性地更新库和/或添加新库。要么响应于请求、要么通过通知使用这样的库的系统,一个或多个更新服务器可提供关于可供下载的库的信息。新的可用库可被呈现给用户用于选择和下载。对经更新的库的请求可以以若干方式进行,比如通过轮询更新、来自尝试使用库的应用的异常、以及在应用代码的编译以后。
【专利说明】更新硬件库以供具有FPGA协处理器的计算机系统上的应用使用
【技术领域】
[0001]本发明涉及更新硬件库以供具有FPGA协处理器的计算机系统上的应用使用。
【背景技术】
[0002]在大多数通用计算机内,操作系统是管理对计算机内资源的访问的主要软件。主要资源是执行被设计成在计算机上运行的应用程序的中央处理单元(CPU)、主存储器和存储。在一些计算机体系结构中,可出现附加的处理单元(诸如处理器中的多个核)和/或附加的处理器(称为协作处理器)。这样的协作处理器的示例包括图形处理单元(GPU)和数字信号处理器(DSP)。操作系统也管理多个进程对这些资源的访问。
[0003]现场可编程门阵列(FPGA)是一种通常被用在专用计算设备中的逻辑器件。FPGA通常被用于执行此门阵列尤其适用于的特定的、专用的功能。FPGA通常位于外围设备或其它专用硬件(诸如连接到诸如PCI总线的系统总线并通过该系统总线被访问的印刷电路板)中。一般而言,这样的器件被编程一次并被使用多次。因为这些器件是可编程的,相比于其它专用逻辑器件,它们具有能被在现场更新的优势。

【发明内容】

[0004]提供本
【发明内容】
以便以简化形式介绍将在以下【具体实施方式】中进一步描述的一些概念。本
【发明内容】
并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
[0005]一个或多个现场可编程门阵列(FPGA)能在通用计算系统中用作共享可编程协作处理器资源。FPGA能被编程来执行功能,这些功能进而能与一个或多个进程相关联。在多个进程的情况下,FPGA能被共享,并且进程能在访问FPGA的时间间隙期间被分配到FPGA的至少一个部分。用硬件描述语言所写的用于编程FPGA的程序被用作硬件库。操作系统对以下进行管理:将FPGA资源分配到进程、根据要由进程使用FPGA来执行的功能来编程该FPGA、以及对这些进程对FPGA的使用进行调度。
[0006]在给定系统中的一组硬件库的情况下,可提供更新进程来周期性地(或按请求)更新库,以添加新库或将现存库改变为新版本。要么响应于请求,要么通过通知使用这样的库的系统,一个或多个更新服务器可提供关于可用于下载的库的信息。新的可用库可被呈现给用户用于选择和下载。对经更新库的请求可以按若干方式发生,诸如通过对更新的轮询,来自尝试使用库的应用的异常,以及在应用代码的编译时。
[0007]在以下描述中,对附图进行了参考,附图构成了实施方式的一部分且在其中作为示例示出了本发明技术的具体示例实现。可以理解,可以使用其它实施例并且可以做出结构上的改变而不背离本发明的范围。
【专利附图】

【附图说明】[0008]图1是对其操作系统能被实现的具有FPGA资源的示例计算系统的框图。
[0009]图2是FPGA功能单元的说明性示例的示意图。
[0010]图3是使用具有FPGA资源的计算机系统上的硬件和软件库的应用的示例体系结构的示意图。
[0011]图4是示出随着时间的对FPGA使用的图。
[0012]图5示出用于更新硬件库的系统的示例实现的数据流程图。
[0013]图6是示出基于代码分析请求硬件库的示例实现的流程图。
[0014]图7是示出基于用户选择请求硬件库的示例实现的流程图。
[0015]图8是示出基于轮询更新服务器来请求硬件库的示例实现的流程图。
【具体实施方式】
[0016]以下部分提供了对示例计算环境的简要的、一般的描述,在该示例计算环境中能实现用于管理对FPGA资源的使用的操作系统。该系统可以用众多通用或专用计算设备来实现。适合的公知计算设备的示例包括但不限于:个人计算机、服务器计算机、手持式或膝上型设备(例如,媒体播放器、笔记本计算机、蜂窝电话、个人数据助理、语音记录器)、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型机、大型计算机、包括以上系统或设备的任一个的分布式计算环境等等。
[0017]图1仅仅示出示例计算环境,并不旨在对适合的计算环境的使用范围或功能提出任何限制。
[0018]参考图1,示例计算环境包括计算设备100。在一个基本配置中,计算设备100包括至少一个处理单元102 (诸如通用计算机的典型中央处理单元(CPU))和存储器104。
[0019]计算设备可包括多个处理单元和/或附加的协作处理单元,诸如图形处理单元(GPU)。计算设备还包括一个或多个现场可编程门阵列(FPGA),其被表示为可用作共享(在运行在计算机上的进程间共享)的协作处理资源的FPGA单元120。FPGA可位于其自己的CPU插孔中或位于分开的被插入到扩展槽(诸如快速外围部件互连(PC1-E)槽)中的卡上。通过提供这样的FPGA单元,能在得到硬件加速的益处的情况下实现各种非常适合于门阵列来实现的功能。
[0020]取决于处理单元和FPGA单元的配置,该单元或单元内的每个功能单元具有相关联的输入/输出通道来用于与主操作系统进程进行通信。例如,能提供专用于该功能单元并在其与使用该功能单元的进程之间共享的存储器区域。一种请求队列和响应队列还能被用于使得能够实现在FPGA单元内实现的操作的异步调用。此外,FPGA单元中的功能单元针对进程的状态能被保存到用于该功能单元和该进程的存储器区域并从该存储器区域中还原。替换地,其它技术能被用于确保功能单元在被其进程使用前处于已知状态。
[0021]取决于计算设备的配置和类型,存储器104可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等)或是两者的某种组合。处理单元、协作处理器和存储器的该配置在图1中用虚线106示出。
[0022]计算设备100还可具有附加的资源和设备。例如,计算设备100还可包含附加存储(可移动和/或不可移动),包括但不限于磁盘、光盘或磁带。在图1中通过可移动存储108和不可移动存储110示出这样的附加存储。计算机存储介质包括以用于存储诸如计算机程序指令、数据文件、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108和不可移动存储110全部都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者可用于存储所需信息并且可由计算设备100访问的任何其它介质。任何这样的计算机存储介质都可以是计算设备100的一部分。
[0023]计算设备100还可包括通信连接112,其允许设备通过通信介质与其它设备进行通信。通信连接112的实现是取决于正由计算设备访问的通信介质的种类的,这是因为其提供了对这样的介质的接口以允许通过该通信介质的数据的传输和/接收。通信介质通常承载诸如载波或其他传输机制等已调制数据信号中的计算机程序指令、数据文件、数据结构、程序模块或其他数据,并包括任何信息传递介质。术语“已调制数据信号”指其一个或多个特征以这样的方式设置或改变以便在信号中对信息进行编码的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。
[0024]计算设备100可具有各种输入设备114,如键盘、鼠标、笔、相机、触摸输入设备等。还可包括诸如显示器、扬声器、打印机等输出设备116。所有这些设备在本领域中是公知的并且不必在此详细讨论。
[0025]使用由计算设备处理的诸如程序模块等计算机可执行指令和/或计算机解释的指令来实现在计算设备上执行的应用。一般而言,程序模块包括在由处理单元处理时指示处理单元执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。在分布式计算环境中,这样的任务能由通过通信网络链接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。
[0026]在计算设备上执行的操作系统管理进程对计算设备的各种资源的访问。通常,在计算机系统上运行应用导致一个或多个进程被创建,其中每个进程随着时间被分配到不同的资源。如果资源在进程间共享,并且如果进程不能并发地共享资源,那么操作系统随着时间调度对资源的访问。这样的资源之一是图1的FPGA单元120,其可包括一个或多个分立的 FPGA。
[0027]参考图2,FPGA单元内的资源之一是一组或多组可编程门,在此称为功能单元。每个功能单元通过一组门和/或门阵列中的其它资源来定义。一般而言,功能单元是不重叠的,即,不共享门阵列中的可编程元件。例如,如图2中示意地示出的,功能单元200、202、204和206是不重叠的。大多数FPGA只有一个功能单元。然而,图1中的FPGA单元120可具有一个或多个FPGA。在多个FPGA的情况下,每个FPGA可被视为功能单元。参考图3,每个功能单元是以下资源:其能被分配给一个或多个进程、被操作系统使用实现一操作的硬件库来编程并接着被分配给其的进程用于执行该操作。参考图3,作为一个示例,应用300可使用传统的软件库302以及FPGA硬件库304来执行各种操作。如果应用依赖硬件库304,则操作系统306使用该硬件库来编程FPGA资源310以允许应用300使用库。FPGA可在应用开始执行之前被编程。如果FPGA可被足够快地重新编程,那么库可在操作系统的调度量子(quantum)内被加载到FPGA中。操作系统306还执行来自应用300和CPU308上的软件库302的软件命令。当应用作出对由软件库执行的功能的调用时,操作系统执行来自CPU308上的软件库的功能。当应用作出对由FPGA执行的功能的调用时,操作系统确保FPGA是使用硬件库来编程的并使用FPGA来执行功能。
[0028]为了示出不同的功能单元能随着时间如何被使用,现在参考图4。在图4中,在时间Tl处,使用功能单元400和402。在时间T2,使用功能单元400和404。在时间T2,再次使用功能单元400和402。在时间Tl,功能单元400能被分配给进程Pl,而功能单元402能被分配给进程P2。在时间T2,进程P2可能是不活动的,而进程Pl能使用功能单元400并且进程P3能使用功能单元404。在时间T3,另一进程(诸如进程P4)能开始使用功能单元400 ;并且进程P2能再次活动来使用功能单元402。通过当前的FPGA实现,在同一时间由不同的进程对多个功能单元的使用暗示多个FPGA的使用。就FPGA能支持由不同的进程在同一时间使用的多个功能单元而言,这些功能单元能在同一 FPGA上。实际上,操作系统在时间和空间方面在统计学上复用FPGA。
[0029]为了允许这种随着时间由不同的进程对FPGA资源的使用,操作系统具有调度器,该调度器确定在每个调度量子(即,时间段)哪个进程能访问FPGA资源以及何时FPGA功能单元将用硬件库来编程使得功能单元可用于由该进程使用。由此,用于FPGA单元的调度器的实现部分地取决于FPGA单元的性质以及其包括的一个或多个FPGA。要考虑的与FPGA有关的因素包括但不限于以下。例如,在一些情况下,如果一个功能单元不能独立于其它功能单元而被编程,那么整个FPGA要被刷新来编程功能单元。另一考虑是功能单元能被编程的速度以及功能单元的编程是否阻止其它功能模块在编程阶段期间被使用。要考虑的另一因素是进程是否能通过共享功能单元来共享硬件库。调度器还考虑诸如以下的因素:并发进程的数量、应用性能保证、应用的优先级、进程上下文切换花费、对存储器和总线的访问以及在没有功能单元在FPGA单元中可用的情况下软件库的可用性。
[0030]可以存在其它情况,其中FPGA单元向应用或操作系统提供通用设施,其因此被调度为应用实例化的长度。例如,自定义网络协议或卸载可作为FPGA单元上的加速服务来提供。相反,一般在通用CPU中执行的系统调用或标准库调用能使用FPGA来被加速。此外,操作系统能基于进程优先级的偏好来复用CPU。在另一情况中,操作系统能使用应用的简档(统计地或动态地生成)来预测最适合于在FPGA单元上运行的功能并接着预先加载该功能,使得其可用于调度。通过将简档用作向导,操作系统能确保空间和时间均在FPGA单元上可用来加速应用。最终,操作系统能使用来自应用的简单提示来知道何时在FPGA单元上调度时间。例如,某些到操作系统内的调用(系统调用)可指示长的延迟(对盘或网络的调用),其提供了 FPGA单元能空闲某一时间量来供其它线程或进程使用的提示。因此,操作系统使用各种提示和偏好来创建对复用对FPGA单元的访问的调度。由于操作系统控制调度器,因此其具有关于正在执行和即将到来的工作、可用的硬件库以及在编程FPGA所花费的时间的详细知识。因此,它能使用该知识来确定在执行期间哪些进程利用FPGA。
[0031]现在已经描述了这样的计算机体系结构的一般概览,现在将描述用于更新硬件库的示例实现。
[0032]参见图5,更新进程500能够访问硬件库502,该硬件库502存储了用于在FPGA协处理器上实现功能的代码。更新进程500与更新服务器510进行通信以,在一些情况下,接收描述可用库的信息504,以及在其它情况下接收经更新的硬件库506。更新服务器510可将信息504和库506推送到更新进程500,或可在接收到来自更新服务器的请求508时提供这样的信息。更新进程500可驻留在主机计算机的操作系统中,或可以是运行在该主机计算机上的用户级服务。更新服务器510可以是通过计算机网络连接到该主机计算机的分开的服务器计算机。
[0033]更新服务器也可以被配置为不仅可被更新进程访问,而且或替换地可通过常规web浏览器或其它用户界面来访问。更新服务器可提供一个或多个虚拟店面作为界面,通过该一个或多个虚拟店面,库可被用于选择、出售和/或下载到用户。这样的界面可包括描述库和定价的信息以及用于下载该库的其它项。
[0034]在更新进程接收关于可用库的信息之后,可用库的列表512可被呈现给用户,以用于通过用户界面514来选择。通过用户界面中的适当的输入设备,用户可向更新进程提供用于下载的一个或多个库的选择516的指示。
[0035]基于各种情况,更新进程可触发对硬件库的请求。例如,代码分析可标识已知具有对应硬件库的功能。如果硬件库不可用或如果在使用它时发生错误,则应用在被执行时可触发异常。在这样的情况下,操作系统可尝试通过使用对应的软件库(如果可用)来处理该异常。或者,在应用被加载时,操作系统或应用加载器可作出决定:是动态地链接到硬件还是软件库。可使用系统参数来指示:硬件库是否应被更新。因此,如图5所示,更新进程可被应用异常518和/或系统参数520触发。在开发环境524中提供的工具在正在开发的应用526指定或可使用硬件库时也可发起请求522。一些请求硬件库的示例实现如下。
[0036]更新进程和更新服务器之间的通道可受保护,以确保更新进程与合法更新服务器进行通信。类似地,从更新服务器下载的库可被认证为是由受信源创作的以提高安全性。
[0037]图6是示出基于代码分析请求硬件库的示例实现的流程图。关于硬件库的信息被接收600到存储器。应用代码被接收并分析602以标识对一个或多个硬件库的引用。在一些情况下,对一个库的引用可允许通过软件或硬件库实现。根据所接收的硬件库信息,在应用代码中引用的具有对应实现的任何库被标识604。所标识的硬件库随后被下载606。
[0038]图7是示出基于用户选择请求硬件库的示例实现的流程图。关于硬件库的信息被接收700到存储器。该信息的列表或其它格式化视图被呈现702给用户,从中用户被允许作出选择。如果来自用户的选择被接收704,则所标识的硬件库可被下载706。硬件库也可被做广告为提供改善的用户体验并且因此保证升级,该升级可被购买或被许可并被下载,要么收费要么作为补偿而免费。
[0039]图8是示出基于轮询或从更新服务器接收通知来请求硬件库的示例实现的流程图。具体地,更新进程首先标识800当前使用的硬件库,诸如图5中502中存储的。在给定硬件库的标识符的情况下,更新服务器接着被轮询802。 更新服务器确定是否有任何更新与标识给它的硬件库相关。更新进程接着接收804关于对硬件库的任何可用更新的信息。这些更新接着可被请求806用于下载。
[0040]在所附权利要求的主题中的术语“制品”、“过程”、“机器”和“物质组成”旨在将权利要求限制到被认为落入35U.S.C.§ 101中的这些术语的使用所定义的可被专利保护的主题的范围内。
[0041]上文中提到的此处描述的替换实施方式中的任一个或全部可以按形成附加混合实施方式所需的任何组合使用。应该理解,在所附权利要求中定义的主题没有必要限于上述的特定实现。上述特定实现仅作为例子被揭示。
【权利要求】
1.一种计算机实现的方法,包括: 将描述硬件库的信息接收到存储器中,所述硬件库在计算机系统中用于编程现场可编程门阵列; 将描述对所述硬件库的更新的信息接收到存储器; 根据描述所述更新的所述信息更新所述硬件库。
2.如权利要求1所述的计算机实现的方法,其中接收描述更新的信息包括: 向更新服务器发出对一组硬件库的更新的请求;以及 从所述更新服务器接收描述该组硬件库的可用更新的信息。
3.如权利要求2所述的计算机实现的方法,其中接收描述更新的信息包括: 响应于指示硬件库的执行失败的应用异常来发送所述请求。
4.如权利要求2所述的计算机实现的方法,其中接收描述更新的信息包括: 响应于指定更新硬件库的时间的系统参数来发送所述请求。
5.如权利要求2所述的计算机实现的方法,其中接收描述更新的信息包括: 响应于指示硬件库在应用中的使用的开发环境来发送所述请求。
6.如权利要求1所述的计算机实现方法,其特征在于,进一步包括: 向用户程序描述可用更新的信息;以及 从所述用户接收对所述可用更新中的选择的指示。
7.如权利要求6所述的计算机实现方法,其特征在于,被呈现给所述用户的所述信息被呈现在虚拟店面中,所述虚拟店面提供包括描述所述库和定价的信息以及用于下载所述库的其它项的界面。
8.一种计算机程序产品,包括: 计算机可读存储介质; 存储在所述计算机可读存储介质上的计算机程序指令,在被计算机执行时,指令所述计算机执行包括以下的进程: 将描述硬件库的信息接收到存储器中,所述硬件库在计算机系统中用于编程现场可编程门阵列; 将描述对所述硬件库的更新的信息接收到存储器; 根据描述所述更新的所述信息更新所述硬件库。
9.如权利要求8所述的计算机程序产品,其中接收描述更新的信息包括: 向更新服务器发出对一组硬件库的更新的请求;以及 从所述更新服务器接收描述该组硬件库的可用更新的信息。
10.如权利要求9所述的计算机程序产品,其中接收描述更新的信息包括: 响应于指示硬件库的执行失败的应用异常来发送所述请求。
11.如权利要求9所述的计算机程序产品,其中接收描述更新的信息包括: 响应于指定更新硬件库的时间的系统参数来发送所述请求。
12.如权利要求9所述的计算机程序产品,其中接收描述更新的信息包括: 响应于指示硬件库在应用中的使 用的开发环境来发送所述请求。
13.如权利要求8所述的计算机程序产品,其特征在于,还包括 向用户程序描述可用更新的信息;以及从所述用户接收对所述可用更新的选择的指示。
14.如权利要求13所述的计算机实现的方法,其特征在于,更新所述硬件库包括根据来自所述用户的选择更新硬件库。
15.一种计算机器,包括: 硬件库集合,所述硬件库集合能够被所述计算机器访问,并被用在所述计算机器中用于编程现场可编程门阵列; 更新进程组件,被配置为将描述所述硬件库的信息接收到存储器中; 所述更新进程组件还被配置为将描述对所述硬件库的更新的信息接收到存储器中;以及 所述更新进程组件还被配置为根据描述所述更新的所述信息来更新所述硬件库。
16.如权利要求15所述的计算机器,其特征在于,所述更新进程组件被配置为: 向更新服务器发出对一组硬件库的更新的请求;以及 从所述更新服务器接收描述该组硬件库的可用更新的信息。
17.如权利要求16所述的计算机器,其中所述更新进程组件被配置为: 接收指示硬件库的执行失败的应用异常;以及 响应于指示硬件库的执行失败的应用异常来发送所述请求。
18.如权利要求16所述的计算机器,其中所述更新进程组件被配置为: 访问指定更新硬件库的时间的系统参数;以及 响应于指定更新硬件库的时间的出现来发送所述请求。
19.如权利要求16所述的计算机器,其中所述更新进程组件被配置为: 从指示硬件库在应用中的使用的开发环境接收信息;以及 响应于从指示硬件库的使用的所述开发环境接收的信息发送所述请求。
20.如权利要求16所述的计算机器,其特征在于,所述更新进程组件被配置为: 从加载器接收信息,所述加载器在应用加载时间确定是否加载库;以及 响应于从所述加载器接收信息来发送所述请求。
【文档编号】G06F9/44GK103488471SQ201310248194
【公开日】2014年1月1日 申请日期:2013年6月20日 优先权日:2012年6月20日
【发明者】E·B·南丁格尔, B·A·拉马恰, P·巴勒姆 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1