CN103488471A - 更新硬件库以供具有fpga协处理器的计算机系统上的应用使用 - Google Patents
更新硬件库以供具有fpga协处理器的计算机系统上的应用使用 Download PDFInfo
- Publication number
- CN103488471A CN103488471A CN201310248194.2A CN201310248194A CN103488471A CN 103488471 A CN103488471 A CN 103488471A CN 201310248194 A CN201310248194 A CN 201310248194A CN 103488471 A CN103488471 A CN 103488471A
- Authority
- CN
- China
- Prior art keywords
- information
- storehouse
- renewal
- hardware
- hardware storehouse
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Abstract
本发明涉及更新硬件库以供具有FPGA协处理器的计算机系统上的应用使用。一种计算机系统包括一个或多个现场可编程门阵列作为协作处理器,其可以在进程间共享并使用硬件库被编程。在给定一组硬件库的情况下,更新进程周期性地更新库和/或添加新库。要么响应于请求、要么通过通知使用这样的库的系统,一个或多个更新服务器可提供关于可供下载的库的信息。新的可用库可被呈现给用户用于选择和下载。对经更新的库的请求可以以若干方式进行,比如通过轮询更新、来自尝试使用库的应用的异常、以及在应用代码的编译以后。
Description
技术领域
本发明涉及更新硬件库以供具有FPGA协处理器的计算机系统上的应用使用。
背景技术
在大多数通用计算机内,操作系统是管理对计算机内资源的访问的主要软件。主要资源是执行被设计成在计算机上运行的应用程序的中央处理单元(CPU)、主存储器和存储。在一些计算机体系结构中,可出现附加的处理单元(诸如处理器中的多个核)和/或附加的处理器(称为协作处理器)。这样的协作处理器的示例包括图形处理单元(GPU)和数字信号处理器(DSP)。操作系统也管理多个进程对这些资源的访问。
现场可编程门阵列(FPGA)是一种通常被用在专用计算设备中的逻辑器件。FPGA通常被用于执行此门阵列尤其适用于的特定的、专用的功能。FPGA通常位于外围设备或其它专用硬件(诸如连接到诸如PCI总线的系统总线并通过该系统总线被访问的印刷电路板)中。一般而言,这样的器件被编程一次并被使用多次。因为这些器件是可编程的,相比于其它专用逻辑器件,它们具有能被在现场更新的优势。
发明内容
提供本发明内容以便以简化形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
一个或多个现场可编程门阵列(FPGA)能在通用计算系统中用作共享可编程协作处理器资源。FPGA能被编程来执行功能,这些功能进而能与一个或多个进程相关联。在多个进程的情况下,FPGA能被共享,并且进程能在访问FPGA的时间间隙期间被分配到FPGA的至少一个部分。用硬件描述语言所写的用于编程FPGA的程序被用作硬件库。操作系统对以下进行管理:将FPGA资源分配到进程、根据要由进程使用FPGA来执行的功能来编程该FPGA、以及对这些进程对FPGA的使用进行调度。
在给定系统中的一组硬件库的情况下,可提供更新进程来周期性地(或按请求)更新库,以添加新库或将现存库改变为新版本。要么响应于请求,要么通过通知使用这样的库的系统,一个或多个更新服务器可提供关于可用于下载的库的信息。新的可用库可被呈现给用户用于选择和下载。对经更新库的请求可以按若干方式发生,诸如通过对更新的轮询,来自尝试使用库的应用的异常,以及在应用代码的编译时。
在以下描述中,对附图进行了参考,附图构成了实施方式的一部分且在其中作为示例示出了本发明技术的具体示例实现。可以理解,可以使用其它实施例并且可以做出结构上的改变而不背离本发明的范围。
附图说明
图1是对其操作系统能被实现的具有FPGA资源的示例计算系统的框图。
图2是FPGA功能单元的说明性示例的示意图。
图3是使用具有FPGA资源的计算机系统上的硬件和软件库的应用的示例体系结构的示意图。
图4是示出随着时间的对FPGA使用的图。
图5示出用于更新硬件库的系统的示例实现的数据流程图。
图6是示出基于代码分析请求硬件库的示例实现的流程图。
图7是示出基于用户选择请求硬件库的示例实现的流程图。
图8是示出基于轮询更新服务器来请求硬件库的示例实现的流程图。
具体实施方式
以下部分提供了对示例计算环境的简要的、一般的描述,在该示例计算环境中能实现用于管理对FPGA资源的使用的操作系统。该系统可以用众多通用或专用计算设备来实现。适合的公知计算设备的示例包括但不限于:个人计算机、服务器计算机、手持式或膝上型设备(例如,媒体播放器、笔记本计算机、蜂窝电话、个人数据助理、语音记录器)、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型机、大型计算机、包括以上系统或设备的任一个的分布式计算环境等等。
图1仅仅示出示例计算环境,并不旨在对适合的计算环境的使用范围或功能提出任何限制。
参考图1,示例计算环境包括计算设备100。在一个基本配置中,计算设备100包括至少一个处理单元102(诸如通用计算机的典型中央处理单元(CPU))和存储器104。
计算设备可包括多个处理单元和/或附加的协作处理单元,诸如图形处理单元(GPU)。计算设备还包括一个或多个现场可编程门阵列(FPGA),其被表示为可用作共享(在运行在计算机上的进程间共享)的协作处理资源的FPGA单元120。FPGA可位于其自己的CPU插孔中或位于分开的被插入到扩展槽(诸如快速外围部件互连(PCI-E)槽)中的卡上。通过提供这样的FPGA单元,能在得到硬件加速的益处的情况下实现各种非常适合于门阵列来实现的功能。
取决于处理单元和FPGA单元的配置,该单元或单元内的每个功能单元具有相关联的输入/输出通道来用于与主操作系统进程进行通信。例如,能提供专用于该功能单元并在其与使用该功能单元的进程之间共享的存储器区域。一种请求队列和响应队列还能被用于使得能够实现在FPGA单元内实现的操作的异步调用。此外,FPGA单元中的功能单元针对进程的状态能被保存到用于该功能单元和该进程的存储器区域并从该存储器区域中还原。替换地,其它技术能被用于确保功能单元在被其进程使用前处于已知状态。
取决于计算设备的配置和类型,存储器104可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等)或是两者的某种组合。处理单元、协作处理器和存储器的该配置在图1中用虚线106示出。
计算设备100还可具有附加的资源和设备。例如,计算设备100还可包含附加存储(可移动和/或不可移动),包括但不限于磁盘、光盘或磁带。在图1中通过可移动存储108和不可移动存储110示出这样的附加存储。计算机存储介质包括以用于存储诸如计算机程序指令、数据文件、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108和不可移动存储110全部都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者可用于存储所需信息并且可由计算设备100访问的任何其它介质。任何这样的计算机存储介质都可以是计算设备100的一部分。
计算设备100还可包括通信连接112,其允许设备通过通信介质与其它设备进行通信。通信连接112的实现是取决于正由计算设备访问的通信介质的种类的,这是因为其提供了对这样的介质的接口以允许通过该通信介质的数据的传输和/接收。通信介质通常承载诸如载波或其他传输机制等已调制数据信号中的计算机程序指令、数据文件、数据结构、程序模块或其他数据,并包括任何信息传递介质。术语“已调制数据信号”指其一个或多个特征以这样的方式设置或改变以便在信号中对信息进行编码的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。
计算设备100可具有各种输入设备114,如键盘、鼠标、笔、相机、触摸输入设备等。还可包括诸如显示器、扬声器、打印机等输出设备116。所有这些设备在本领域中是公知的并且不必在此详细讨论。
使用由计算设备处理的诸如程序模块等计算机可执行指令和/或计算机解释的指令来实现在计算设备上执行的应用。一般而言,程序模块包括在由处理单元处理时指示处理单元执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。在分布式计算环境中,这样的任务能由通过通信网络链接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。
在计算设备上执行的操作系统管理进程对计算设备的各种资源的访问。通常,在计算机系统上运行应用导致一个或多个进程被创建,其中每个进程随着时间被分配到不同的资源。如果资源在进程间共享,并且如果进程不能并发地共享资源,那么操作系统随着时间调度对资源的访问。这样的资源之一是图1的FPGA单元120,其可包括一个或多个分立的FPGA。
参考图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来执行功能。
为了示出不同的功能单元能随着时间如何被使用,现在参考图4。在图4中,在时间T1处,使用功能单元400和402。在时间T2,使用功能单元400和404。在时间T2,再次使用功能单元400和402。在时间T1,功能单元400能被分配给进程P1,而功能单元402能被分配给进程P2。在时间T2,进程P2可能是不活动的,而进程P1能使用功能单元400并且进程P3能使用功能单元404。在时间T3,另一进程(诸如进程P4)能开始使用功能单元400;并且进程P2能再次活动来使用功能单元402。通过当前的FPGA实现,在同一时间由不同的进程对多个功能单元的使用暗示多个FPGA的使用。就FPGA能支持由不同的进程在同一时间使用的多个功能单元而言,这些功能单元能在同一FPGA上。实际上,操作系统在时间和空间方面在统计学上复用FPGA。
为了允许这种随着时间由不同的进程对FPGA资源的使用,操作系统具有调度器,该调度器确定在每个调度量子(即,时间段)哪个进程能访问FPGA资源以及何时FPGA功能单元将用硬件库来编程使得功能单元可用于由该进程使用。由此,用于FPGA单元的调度器的实现部分地取决于FPGA单元的性质以及其包括的一个或多个FPGA。要考虑的与FPGA有关的因素包括但不限于以下。例如,在一些情况下,如果一个功能单元不能独立于其它功能单元而被编程,那么整个FPGA要被刷新来编程功能单元。另一考虑是功能单元能被编程的速度以及功能单元的编程是否阻止其它功能模块在编程阶段期间被使用。要考虑的另一因素是进程是否能通过共享功能单元来共享硬件库。调度器还考虑诸如以下的因素:并发进程的数量、应用性能保证、应用的优先级、进程上下文切换花费、对存储器和总线的访问以及在没有功能单元在FPGA单元中可用的情况下软件库的可用性。
可以存在其它情况,其中FPGA单元向应用或操作系统提供通用设施,其因此被调度为应用实例化的长度。例如,自定义网络协议或卸载可作为FPGA单元上的加速服务来提供。相反,一般在通用CPU中执行的系统调用或标准库调用能使用FPGA来被加速。此外,操作系统能基于进程优先级的偏好来复用CPU。在另一情况中,操作系统能使用应用的简档(统计地或动态地生成)来预测最适合于在FPGA单元上运行的功能并接着预先加载该功能,使得其可用于调度。通过将简档用作向导,操作系统能确保空间和时间均在FPGA单元上可用来加速应用。最终,操作系统能使用来自应用的简单提示来知道何时在FPGA单元上调度时间。例如,某些到操作系统内的调用(系统调用)可指示长的延迟(对盘或网络的调用),其提供了FPGA单元能空闲某一时间量来供其它线程或进程使用的提示。因此,操作系统使用各种提示和偏好来创建对复用对FPGA单元的访问的调度。由于操作系统控制调度器,因此其具有关于正在执行和即将到来的工作、可用的硬件库以及在编程FPGA所花费的时间的详细知识。因此,它能使用该知识来确定在执行期间哪些进程利用FPGA。
现在已经描述了这样的计算机体系结构的一般概览,现在将描述用于更新硬件库的示例实现。
参见图5,更新进程500能够访问硬件库502,该硬件库502存储了用于在FPGA协处理器上实现功能的代码。更新进程500与更新服务器510进行通信以,在一些情况下,接收描述可用库的信息504,以及在其它情况下接收经更新的硬件库506。更新服务器510可将信息504和库506推送到更新进程500,或可在接收到来自更新服务器的请求508时提供这样的信息。更新进程500可驻留在主机计算机的操作系统中,或可以是运行在该主机计算机上的用户级服务。更新服务器510可以是通过计算机网络连接到该主机计算机的分开的服务器计算机。
更新服务器也可以被配置为不仅可被更新进程访问,而且或替换地可通过常规web浏览器或其它用户界面来访问。更新服务器可提供一个或多个虚拟店面作为界面,通过该一个或多个虚拟店面,库可被用于选择、出售和/或下载到用户。这样的界面可包括描述库和定价的信息以及用于下载该库的其它项。
在更新进程接收关于可用库的信息之后,可用库的列表512可被呈现给用户,以用于通过用户界面514来选择。通过用户界面中的适当的输入设备,用户可向更新进程提供用于下载的一个或多个库的选择516的指示。
基于各种情况,更新进程可触发对硬件库的请求。例如,代码分析可标识已知具有对应硬件库的功能。如果硬件库不可用或如果在使用它时发生错误,则应用在被执行时可触发异常。在这样的情况下,操作系统可尝试通过使用对应的软件库(如果可用)来处理该异常。或者,在应用被加载时,操作系统或应用加载器可作出决定:是动态地链接到硬件还是软件库。可使用系统参数来指示:硬件库是否应被更新。因此,如图5所示,更新进程可被应用异常518和/或系统参数520触发。在开发环境524中提供的工具在正在开发的应用526指定或可使用硬件库时也可发起请求522。一些请求硬件库的示例实现如下。
更新进程和更新服务器之间的通道可受保护,以确保更新进程与合法更新服务器进行通信。类似地,从更新服务器下载的库可被认证为是由受信源创作的以提高安全性。
图6是示出基于代码分析请求硬件库的示例实现的流程图。关于硬件库的信息被接收600到存储器。应用代码被接收并分析602以标识对一个或多个硬件库的引用。在一些情况下,对一个库的引用可允许通过软件或硬件库实现。根据所接收的硬件库信息,在应用代码中引用的具有对应实现的任何库被标识604。所标识的硬件库随后被下载606。
图7是示出基于用户选择请求硬件库的示例实现的流程图。关于硬件库的信息被接收700到存储器。该信息的列表或其它格式化视图被呈现702给用户,从中用户被允许作出选择。如果来自用户的选择被接收704,则所标识的硬件库可被下载706。硬件库也可被做广告为提供改善的用户体验并且因此保证升级,该升级可被购买或被许可并被下载,要么收费要么作为补偿而免费。
图8是示出基于轮询或从更新服务器接收通知来请求硬件库的示例实现的流程图。具体地,更新进程首先标识800当前使用的硬件库,诸如图5中502中存储的。在给定硬件库的标识符的情况下,更新服务器接着被轮询802。更新服务器确定是否有任何更新与标识给它的硬件库相关。更新进程接着接收804关于对硬件库的任何可用更新的信息。这些更新接着可被请求806用于下载。
在所附权利要求的主题中的术语“制品”、“过程”、“机器”和“物质组成”旨在将权利要求限制到被认为落入35U.S.C.§101中的这些术语的使用所定义的可被专利保护的主题的范围内。
上文中提到的此处描述的替换实施方式中的任一个或全部可以按形成附加混合实施方式所需的任何组合使用。应该理解,在所附权利要求中定义的主题没有必要限于上述的特定实现。上述特定实现仅作为例子被揭示。
Claims (20)
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所述的计算机器,其特征在于,所述更新进程组件被配置为:
从加载器接收信息,所述加载器在应用加载时间确定是否加载库;以及
响应于从所述加载器接收信息来发送所述请求。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/528,329 | 2012-06-20 | ||
US13/528,329 US9424019B2 (en) | 2012-06-20 | 2012-06-20 | Updating hardware libraries for use by applications on a computer system with an FPGA coprocessor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103488471A true CN103488471A (zh) | 2014-01-01 |
CN103488471B CN103488471B (zh) | 2018-04-06 |
Family
ID=48699356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310248194.2A Active CN103488471B (zh) | 2012-06-20 | 2013-06-20 | 更新硬件库以供具有fpga协处理器的计算机系统上的应用使用 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9424019B2 (zh) |
CN (1) | CN103488471B (zh) |
TW (1) | TWI584141B (zh) |
WO (1) | WO2013192380A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108694050A (zh) * | 2017-03-30 | 2018-10-23 | 维布络有限公司 | 对存储系统的软件包进行更新的方法和系统 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8898480B2 (en) | 2012-06-20 | 2014-11-25 | Microsoft Corporation | Managing use of a field programmable gate array with reprogammable cryptographic operations |
US9230091B2 (en) | 2012-06-20 | 2016-01-05 | Microsoft Technology Licensing, Llc | Managing use of a field programmable gate array with isolated components |
US9298438B2 (en) * | 2012-06-20 | 2016-03-29 | Microsoft Technology Licensing, Llc | Profiling application code to identify code portions for FPGA implementation |
WO2014204453A1 (en) * | 2013-06-19 | 2014-12-24 | Empire Technology Development, Llc | Processor-optimized library loading for virtual machines |
US9507526B2 (en) | 2014-11-14 | 2016-11-29 | Netapp, Inc. | Just-in time remote data storage allocation |
CN104581782B (zh) * | 2014-12-29 | 2018-01-19 | 三维通信股份有限公司 | 一种用于分布式综合接入系统的新型fpga模块 |
US9411528B1 (en) | 2015-04-22 | 2016-08-09 | Ryft Systems, Inc. | Storage management systems and methods |
US9542244B2 (en) | 2015-04-22 | 2017-01-10 | Ryft Systems, Inc. | Systems and methods for performing primitive tasks using specialized processors |
US9411613B1 (en) | 2015-04-22 | 2016-08-09 | Ryft Systems, Inc. | Systems and methods for managing execution of specialized processors |
US10341852B2 (en) | 2017-06-02 | 2019-07-02 | Apple Inc. | Informational articles in response to detection of devices or software |
US10031993B1 (en) * | 2017-06-12 | 2018-07-24 | Intel Corporation | Application store model for dynamic reconfiguration of a field-programmable gate array (FPGA) |
US11645059B2 (en) | 2017-12-20 | 2023-05-09 | International Business Machines Corporation | Dynamically replacing a call to a software library with a call to an accelerator |
US10572250B2 (en) | 2017-12-20 | 2020-02-25 | International Business Machines Corporation | Dynamic accelerator generation and deployment |
US10496586B2 (en) | 2018-04-27 | 2019-12-03 | International Business Machines Corporation | Accelerator management |
US10936043B2 (en) * | 2018-04-27 | 2021-03-02 | International Business Machines Corporation | Thermal management of hardware accelerators |
WO2019217925A1 (en) | 2018-05-11 | 2019-11-14 | Lattice Semiconductor Corporation | Key provisioning systems and methods for programmable logic devices |
US11144357B2 (en) | 2018-05-25 | 2021-10-12 | International Business Machines Corporation | Selecting hardware accelerators based on score |
US10747705B2 (en) | 2018-06-13 | 2020-08-18 | International Business Machines Corporation | On-chip accelerator management |
US10740257B2 (en) | 2018-07-02 | 2020-08-11 | International Business Machines Corporation | Managing accelerators in application-specific integrated circuits |
US10977098B2 (en) | 2018-08-14 | 2021-04-13 | International Business Machines Corporation | Automatically deploying hardware accelerators based on requests from users |
US10892944B2 (en) | 2018-11-29 | 2021-01-12 | International Business Machines Corporation | Selecting and using a cloud-based hardware accelerator |
CN110175056B (zh) * | 2019-05-30 | 2022-02-11 | 西安微电子技术研究所 | 一种异构平台远程动态加载多目标fpga的控制装置及控制方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1284681A (zh) * | 1999-08-11 | 2001-02-21 | 国际商业机器公司 | 无需附加硬件即可对pc卡上的fpga编程的方法和系统 |
CN101222743A (zh) * | 2008-01-22 | 2008-07-16 | 中兴通讯股份有限公司 | 一种无线通信系统中管理软件版本文件方法 |
US20090288076A1 (en) * | 2008-05-16 | 2009-11-19 | Mark Rogers Johnson | Managing Updates In A Virtual File System |
US20090293051A1 (en) * | 2008-05-22 | 2009-11-26 | Fortinet, Inc., A Delaware Corporation | Monitoring and dynamic tuning of target system performance |
Family Cites Families (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5752035A (en) | 1995-04-05 | 1998-05-12 | Xilinx, Inc. | Method for compiling and executing programs for reprogrammable instruction set accelerator |
US5748979A (en) | 1995-04-05 | 1998-05-05 | Xilinx Inc | Reprogrammable instruction set accelerator using a plurality of programmable execution units and an instruction page table |
JP3627384B2 (ja) | 1996-01-17 | 2005-03-09 | 富士ゼロックス株式会社 | ソフトウェアの保護機能付き情報処理装置及びソフトウェアの保護機能付き情報処理方法 |
JP3783800B2 (ja) | 1996-08-09 | 2006-06-07 | 富士通株式会社 | プログラマブルな論理素子/装置を用いた暗号化/復号化装置および方法 |
US6971066B2 (en) | 1997-08-18 | 2005-11-29 | National Instruments Corporation | System and method for deploying a graphical program on an image acquisition device |
US6078736A (en) | 1997-08-28 | 2000-06-20 | Xilinx, Inc. | Method of designing FPGAs for dynamically reconfigurable computing |
US7085670B2 (en) * | 1998-02-17 | 2006-08-01 | National Instruments Corporation | Reconfigurable measurement system utilizing a programmable hardware element and fixed hardware resources |
US6150838A (en) | 1999-02-25 | 2000-11-21 | Xilinx, Inc. | FPGA configurable logic block with multi-purpose logic/memory circuit |
GB2352548B (en) | 1999-07-26 | 2001-06-06 | Sun Microsystems Inc | Method and apparatus for executing standard functions in a computer system |
JP2001308843A (ja) | 2000-04-19 | 2001-11-02 | Nec Commun Syst Ltd | 暗号復号化装置 |
US7752419B1 (en) | 2001-03-22 | 2010-07-06 | Qst Holdings, Llc | Method and system for managing hardware resources to implement system functions using an adaptive computing architecture |
WO2002082267A1 (en) | 2001-04-06 | 2002-10-17 | Wind River Systems, Inc. | Fpga coprocessing system |
US6754881B2 (en) | 2001-12-10 | 2004-06-22 | International Business Machines Corporation | Field programmable network processor and method for customizing a network processor |
US6941538B2 (en) | 2002-02-22 | 2005-09-06 | Xilinx, Inc. | Method and system for integrating cores in FPGA-based system-on-chip (SoC) |
US7386717B2 (en) | 2002-03-07 | 2008-06-10 | Intel Corporation | Method and system for accelerating the conversion process between encryption schemes |
US7162644B1 (en) | 2002-03-29 | 2007-01-09 | Xilinx, Inc. | Methods and circuits for protecting proprietary configuration data for programmable logic devices |
US7073158B2 (en) | 2002-05-17 | 2006-07-04 | Pixel Velocity, Inc. | Automated system for designing and developing field programmable gate arrays |
GB0304628D0 (en) | 2003-02-28 | 2003-04-02 | Imec Inter Uni Micro Electr | Method for hardware-software multitasking on a reconfigurable computing platform |
US20040019765A1 (en) | 2002-07-23 | 2004-01-29 | Klein Robert C. | Pipelined reconfigurable dynamic instruction set processor |
US7197647B1 (en) | 2002-09-30 | 2007-03-27 | Carnegie Mellon University | Method of securing programmable logic configuration data |
US7260794B2 (en) | 2002-12-20 | 2007-08-21 | Quickturn Design Systems, Inc. | Logic multiprocessor for FPGA implementation |
US7028283B1 (en) | 2003-01-30 | 2006-04-11 | Xilinx, Inc. | Method of using a hardware library in a programmable logic device |
US7124391B1 (en) | 2003-04-30 | 2006-10-17 | Xilinx, Inc. | Method and apparatus for dynamically connecting modules in a programmable logic device |
US20040230934A1 (en) | 2003-05-15 | 2004-11-18 | Taylor Richard David | System and method for emulating systems with multiple field programmable gate arrays |
US7366652B2 (en) | 2003-06-16 | 2008-04-29 | Springsoft, Inc. | Method of programming a co-verification system |
WO2005086746A2 (en) | 2004-03-04 | 2005-09-22 | Trustees Of Boston University | Programmable-logic acceleraton of data processing applications |
US7512813B2 (en) | 2004-05-28 | 2009-03-31 | International Business Machines Corporation | Method for system level protection of field programmable logic devices |
US7975062B2 (en) | 2004-06-07 | 2011-07-05 | Sling Media, Inc. | Capturing and sharing media content |
US20060059373A1 (en) | 2004-09-10 | 2006-03-16 | International Business Machines Corporation | Integrated circuit chip for encryption and decryption using instructions supplied through a secure interface |
EP1842203A4 (en) | 2004-11-12 | 2011-03-23 | Verayo Inc | KEYS OF VOLATILE DEVICES, AND THEIR APPLICATIONS |
US7386708B2 (en) | 2005-01-13 | 2008-06-10 | Lenovo (Singapore) Pte Ltd. | Secure hardware personalization service |
US7788502B1 (en) | 2005-03-10 | 2010-08-31 | Xilinx, Inc. | Method and system for secure exchange of IP cores |
US7849449B2 (en) | 2005-12-05 | 2010-12-07 | National Instruments Corporation | Implementing a design flow for a programmable hardware element that includes a processor |
US20080104601A1 (en) | 2006-10-26 | 2008-05-01 | Nokia Corporation | Scheduler for multiple software tasks to share reconfigurable hardware |
KR100883655B1 (ko) | 2006-12-04 | 2009-02-18 | 삼성전자주식회사 | 재구성 가능한 프로세서를 갖는 문맥 교환 시스템 및 방법 |
EP1930834A1 (de) | 2006-12-05 | 2008-06-11 | Siemens Schweiz AG | Kryptographisch gesichertes Prozessorsystem |
US7908476B2 (en) | 2007-01-10 | 2011-03-15 | International Business Machines Corporation | Virtualization of file system encryption |
US7870223B2 (en) | 2007-02-27 | 2011-01-11 | Rockwell Automation Technologies, Inc. | Services associated with an industrial environment employing controller engine instances |
US8621008B2 (en) | 2007-04-26 | 2013-12-31 | Mcafee, Inc. | System, method and computer program product for performing an action based on an aspect of an electronic mail message thread |
US8065517B2 (en) | 2007-11-01 | 2011-11-22 | Infineon Technologies Ag | Method and system for transferring information to a device |
US20090119503A1 (en) | 2007-11-06 | 2009-05-07 | L3 Communications Corporation | Secure programmable hardware component |
US8620996B2 (en) | 2007-11-19 | 2013-12-31 | Motorola Mobility Llc | Method and apparatus for determining a group preference in a social network |
US8612409B2 (en) | 2007-12-18 | 2013-12-17 | Yahoo! Inc. | Method and apparatus for detecting and explaining bursty stream events in targeted groups |
US8627052B2 (en) | 2008-04-14 | 2014-01-07 | Dell Products, Lp | System and method of enabling a function within a module configured to be used within an information handling system |
US8533663B2 (en) | 2008-05-12 | 2013-09-10 | Oracle America, Inc. | System and method for utilizing available best effort hardware mechanisms for supporting transactional memory |
FR2935078B1 (fr) | 2008-08-12 | 2012-11-16 | Groupe Des Ecoles De Telecommunications Get Ecole Nationale Superieure Des Telecommunications Enst | Procede de protection du decryptage des fichiers de configuration de circuits logiques programmables et circuit mettant en oeuvre le procede |
CN101782893B (zh) | 2009-01-21 | 2014-12-24 | 上海芯豪微电子有限公司 | 可重构数据处理平台 |
US7830732B2 (en) | 2009-02-11 | 2010-11-09 | Stec, Inc. | Staged-backup flash backed dram module |
US8448122B1 (en) | 2009-04-01 | 2013-05-21 | Xilinx, Inc. | Implementing sub-circuits with predictable behavior within a circuit design |
US8369460B1 (en) | 2009-05-18 | 2013-02-05 | The United States Of America As Represented By The Secretary Of The Army | Reduced complexity constellation pattern recognition and classification method |
US8620967B2 (en) | 2009-06-11 | 2013-12-31 | Rovi Technologies Corporation | Managing metadata for occurrences of a recording |
US8332795B2 (en) | 2009-12-15 | 2012-12-11 | Apple Inc. | Automated pin multiplexing for programmable logic device implementation of integrated circuit design |
US8368423B2 (en) | 2009-12-23 | 2013-02-05 | L-3 Communications Integrated Systems, L.P. | Heterogeneous computer architecture based on partial reconfiguration |
US8417965B1 (en) | 2010-04-07 | 2013-04-09 | Xilinx, Inc. | Method and circuit for secure definition and integration of cores |
US8516268B2 (en) | 2010-08-23 | 2013-08-20 | Raytheon Company | Secure field-programmable gate array (FPGA) architecture |
CA2719653A1 (en) | 2010-11-05 | 2011-01-18 | Ibm Canada Limited - Ibm Canada Limitee | Partial inlining with software based restart |
CN102087600B (zh) | 2011-02-28 | 2015-08-05 | 华为终端有限公司 | 界面自主规划方法及装置 |
CN102324006B (zh) | 2011-09-06 | 2014-01-29 | 四川九洲电器集团有限责任公司 | 一种处理器程序安全保护装置及保护方法 |
CN102377564B (zh) | 2011-11-15 | 2015-03-11 | 华为技术有限公司 | 私钥的加密方法及装置 |
US9230091B2 (en) | 2012-06-20 | 2016-01-05 | Microsoft Technology Licensing, Llc | Managing use of a field programmable gate array with isolated components |
US9298438B2 (en) | 2012-06-20 | 2016-03-29 | Microsoft Technology Licensing, Llc | Profiling application code to identify code portions for FPGA implementation |
US20130346985A1 (en) | 2012-06-20 | 2013-12-26 | Microsoft Corporation | Managing use of a field programmable gate array by multiple processes in an operating system |
US8898480B2 (en) | 2012-06-20 | 2014-11-25 | Microsoft Corporation | Managing use of a field programmable gate array with reprogammable cryptographic operations |
-
2012
- 2012-06-20 US US13/528,329 patent/US9424019B2/en active Active
-
2013
- 2013-06-20 WO PCT/US2013/046719 patent/WO2013192380A1/en active Application Filing
- 2013-06-20 TW TW102121921A patent/TWI584141B/zh not_active IP Right Cessation
- 2013-06-20 CN CN201310248194.2A patent/CN103488471B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1284681A (zh) * | 1999-08-11 | 2001-02-21 | 国际商业机器公司 | 无需附加硬件即可对pc卡上的fpga编程的方法和系统 |
CN101222743A (zh) * | 2008-01-22 | 2008-07-16 | 中兴通讯股份有限公司 | 一种无线通信系统中管理软件版本文件方法 |
US20090288076A1 (en) * | 2008-05-16 | 2009-11-19 | Mark Rogers Johnson | Managing Updates In A Virtual File System |
US20090293051A1 (en) * | 2008-05-22 | 2009-11-26 | Fortinet, Inc., A Delaware Corporation | Monitoring and dynamic tuning of target system performance |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108694050A (zh) * | 2017-03-30 | 2018-10-23 | 维布络有限公司 | 对存储系统的软件包进行更新的方法和系统 |
CN108694050B (zh) * | 2017-03-30 | 2021-04-16 | 维布络有限公司 | 对存储系统的软件包进行更新的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US20130346669A1 (en) | 2013-12-26 |
TWI584141B (zh) | 2017-05-21 |
US9424019B2 (en) | 2016-08-23 |
TW201411387A (zh) | 2014-03-16 |
WO2013192380A1 (en) | 2013-12-27 |
CN103488471B (zh) | 2018-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103488471A (zh) | 更新硬件库以供具有fpga协处理器的计算机系统上的应用使用 | |
CN103455376A (zh) | 对操作系统中多个进程对现场可编程门阵列的使用的管理 | |
CN108376079B (zh) | 自动应用更新 | |
CN104246659A (zh) | 可实例化的手势对象 | |
CN102027460B (zh) | 动态声明性应用程序描述 | |
CN103493011A (zh) | 与库操作系统的应用兼容性 | |
CN104781785A (zh) | 为应用从中间语言代码生成本机代码 | |
CN111399897A (zh) | 基于kubernetes的应用发布方法以及系统 | |
CN105453097A (zh) | 受约束驱动程序平台在用户模式下在沙箱中运行驱动程序 | |
CN104040495A (zh) | 用于可并行、可靠的安装的安装引擎和包格式 | |
CN102591710A (zh) | 共享对象表示 | |
CN100538649C (zh) | 用于分发分派窗内的未使用的处理器循环的方法和系统 | |
JP6070423B2 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
US10303462B2 (en) | Windows support of a pluggable ecosystem for universal windows application stores | |
CN107667343B (zh) | 用于加载按需加载资源的系统和方法 | |
CN114860401A (zh) | 异构云桌面调度系统、方法、服务系统、装置及介质 | |
CN104737174A (zh) | 从许可证的先前和当前状态确定的应用模式 | |
JP2017062782A (ja) | オーバーレイ制御方法およびシステム | |
CN114816032B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN116700694B (zh) | 小程序引擎 | |
KR20180048518A (ko) | 패키지 파일에 대한 기능 확장 방법 및 시스템 | |
CN111240998A (zh) | 测试用例处理方法和装置 | |
KR20150083476A (ko) | 클라우드 서비스 제공 방법 및 시스템 | |
CN117908914A (zh) | 一种组件部署升级方法、装置、计算机设备及存储介质 | |
KR101215485B1 (ko) | 맞춤형 어플리케이션 제공 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150727 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150727 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |