CN103455376A - 对操作系统中多个进程对现场可编程门阵列的使用的管理 - Google Patents

对操作系统中多个进程对现场可编程门阵列的使用的管理 Download PDF

Info

Publication number
CN103455376A
CN103455376A CN2013102450643A CN201310245064A CN103455376A CN 103455376 A CN103455376 A CN 103455376A CN 2013102450643 A CN2013102450643 A CN 2013102450643A CN 201310245064 A CN201310245064 A CN 201310245064A CN 103455376 A CN103455376 A CN 103455376A
Authority
CN
China
Prior art keywords
fpga
programmable gate
operating system
field programmable
gate array
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
Application number
CN2013102450643A
Other languages
English (en)
Inventor
E·B·南丁格尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN103455376A publication Critical patent/CN103455376A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7889Reconfigurable logic implemented as a co-processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本发明描述了对操作系统中多个进程对现场可编程门阵列的使用的管理。现场可编程门阵列能在通用计算系统中用作共享可编程协作处理器资源。FPGA能被编程来执行功能,这些功能进而能与一个或多个进程相关联。通过多个进程,FPGA能被共享,并且进程能在访问FPGA的时间间隙期间被分配到FPGA的至少一个部分。用硬件描述语言所写的用于编程FPGA的程序被用作硬件库。操作系统对以下进行管理:将FPGA资源分配到进程、根据要由进程使用FPGA来执行的功能来编程FPGA、以及对这些进程对FPGA的使用进行调度。

Description

对操作系统中多个进程对现场可编程门阵列的使用的管理
技术领域
本申请涉及对操作系统中多个进程对现场可编程门阵列的使用的管理。
背景技术
在大多数通用计算机内,操作系统是管理对计算机内资源的访问的主要软件。主要资源是执行被设计成在计算机上运行的应用程序的中央处理单元(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是用于存储将FPGA功能单元与进程相关联的数据的数据结构的图。
图6是将FPGA功能单元与进程相关联的示例实现的流程图。
图7是分析代码以标识能由FPGA库加速的代码块的示例实现的流程图。
具体实施方式
以下部分提供了对示例计算环境的简要的、一般的描述,在该示例计算环境中能实现用于管理对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,为了维护FPGA单元的功能单元和进程之间的关系,操作系统存储将每个功能单元关联到进程或使用该功能单元的进程的数据结构500。多个进程能共享同一功能单元,但在不同的调度量子期间使用该功能单元。这个数据结构可采取各种形式,并可包括关于功能单元502和进程504的信息以帮助将功能单元与进程相关联。应用能在编译时间、安装时间和/或运行时间与一个或多个功能单元相关联。可在安装时间或运行时间处作出功能单元和运行应用的进程之间的关联。关联可以是静态的或动态的。
现在将结合图6来描述在运行时间处将功能单元与进程相关联的示例。当应用被执行时,操作系统确定(600)该应用是否具有对特定的FPGA库的依赖性。如果不是,则它的代码能在以下被分析(602并参见图7)来确定FPGA库是否可用于使用。如果存在特定的依赖性,则FPGA库被加载并分析604以定义FPGA单元的被使用的功能单元。该功能单元被关联到606执行该应用的进程。然后确定608该功能单元是否与其它进程共享。如果不是,则FPGA库能被调度来加载610到该功能单元中,之后应用能执行612。如果存在与共享该功能单元的其它进程的冲突,则FPGA库能被排队614来加载到FPGA中。操作系统内的调度器接着被调用616来确定FPGA库何时能被加载来编程功能单元以及随后应用何时能被执行612。
如以上提到的,在用于执行应用的进程与功能单元关联后,操作系统调度器调度使用硬件库对功能单元的编程。
当编程FPGA时,调度器可考虑其它进程是否正在使用FPGA以及编程FPGA是否涉及暂停那些其它进程(在它们对FPGA的使用完成后)。作为一个示例,调度器可等待直到进程变得休眠或没有使用FPGA以启动对FPGA的编程。如果FPGA在被编程期间另一进程变得活动,那么该另一进程能被暂停直到FPGA编程完成。
调度器还可考虑要花费多长时间来编程FPGA以及编程FPGA是否将导致功能模块随着时间针对不同的进程被不同地编程。作为一个示例,调度器可检测到两个进程在利用不同的硬件库来使用同一功能单元。在这种情况下,调度器可响应于哪个进程之一使用软件库而非硬件库来发信号通知异常。调度器还可考虑FPGA是否可在调度量子内被足够快地重新编程以及FPGA被每个进程多频繁地访问,来确定是否发信号通知异常。这种检测还可在进程的加载期间而非在调度器内发生。
在一些情况下,如以上结合图6的602提到的,应用不具有对FPGA库的显式依赖性。例如,应用可包括对API的调用来实现各种功能。然而,该API可在计算机系统上实现为软件库或FPGA库或其它库(例如,用于图形处理单元(GPU)的代码)等。应用的代码可被扫描来标识对具有对FPGA库的引用的API的引用。
针对如图7中提到的示例实现,代码被分析700来标识能使用FPGA库来实现的代码块。如果没有代码块被标识702,则应用以传统方式在不使用FPGA库的情况下被执行704。如果代码块被标识,则确定(706)功能单元是否可用于支持所标识的FPGA库。如果没有足够的FPGA资源可用,则应用可以以传统方式在不使用FPGA库的情况下被执行708。否则,用所标识的FPGA库来执行710应用,所标识的FPGA库根据图6的过程被加载和分析。
在用于执行应用的进程与功能单元关联并且该功能单元用硬件库被编程后,操作系统调度器调度不同的进程对FPGA单元的访问。
作为一个示例,如果两个或更多个应用共享同一硬件库,则对实现该库的FPGA功能单元的访问可在两个进程之间随着时间被复用。可用与在操作系统中共享其它资源的进程类似的方式来实现对FPGA资源的共享。
作为一个示例,低优先级的进程可被允许停止而高优先级的进程最大化对FPGA的使用。尽管由不同的进程来使用不同的功能单元,但是如果在一个时间只有一个进程能访问FPGA,那么对FPGA的访问可以与由多个进程对其它资源访问类似的方式来被调度。如果计算机具有太多的并发进程,那么某些进程能使用软件实现而非FPGA单元提供的功能。现在已经描述了这样的系统的示例实现,应该明显得出,各种数据结构能被用于在操作系统中将FPGA功能单元与进程相关联。此外,取决于FPGA的各种实现,用于加载和重新编程FPGA的操作系统实现将根据使用的FPGA来变化。调度器实现也取决于与在使用冲突的FPGA资源的进程之间进行切换相关联的开销,其是依赖于FPGA的。
在所附权利要求的主题中的术语“制品”、“过程”、“机器”和“物质组成”旨在将权利要求限制到被认为落入35U.S.C.§101中的这些术语的使用所定义的可被专利保护的主题的范围内。
上文中提到的此处描述的替换实施方式中的任一个或全部可以按形成附加混合实施方式所需的任何组合使用。应该理解,在所附权利要求中定义的主题没有必要限于上述的特定实现。上述特定实现仅作为例子被揭示。

Claims (10)

1.一种计算机器,包括:
中央处理单元(102)以及连接到总线的存储器(104);
连接到所述总线的现场可编程门阵列(120);
其中所述中央处理单元执行应用程序(300)以及操作系统(306),所述操作系统管理应用程序对所述中央处理单元、所述存储器和所述现场可编程门阵列的使用。
2.如权利要求1所述的计算机器,其特征在于,所述现场可编程门阵列包括多个功能单元(200、202、204、206)。
3.如权利要求2所述的计算机器,其特征在于,其中每个功能单元是可单独编程的。
4.如权利要求2所述的计算机器,其特征在于,所述操作系统将应用程序与所述现场可编程门阵列的功能单元相关联一段时间。
5.如权利要求4所述的计算机器,其特征在于,所述操作系统在执行应用程序之前,标识对用于编程所述现场可编程门阵列的硬件库的依赖性,并将所述硬件库加载到所述现场可编程门阵列中以供所述应用程序访问。
6.如权利要求4所述的计算机器,其特征在于,其中所述操作系统在执行应用程序之前,标识所述应用程序使用的库,并且如果所述库之一具有硬件实现,则将硬件库加载到所述现场可编程门阵列中以供所述应用程序访问。
7.如权利要求4所述的计算机器,其特征在于,所述操作系统随着时间复用所述应用程序对所述现场可编程门阵列的访问。
8.如权利要求7所述的计算机器,其特征在于,所述操作系统暂停使用所述现场可编程门阵列的进程以允许对所述现场可编程门阵列的编程。
9.如权利要求7所述的计算机器,其特征在于,如果另一具有较高优先级的进程正在使用所述现场可编程门阵列,那么具有低优先级的进程在访问所述现场可编程门阵列时被暂停。
10.如权利要求3所述的计算机器,其特征在于,所述操作系统为进程创建时间和空间调度来使用所述现场可编程门阵列的功能单元。
CN2013102450643A 2012-06-20 2013-06-19 对操作系统中多个进程对现场可编程门阵列的使用的管理 Pending CN103455376A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/528,175 US20130346985A1 (en) 2012-06-20 2012-06-20 Managing use of a field programmable gate array by multiple processes in an operating system
US13/528,175 2012-06-20

Publications (1)

Publication Number Publication Date
CN103455376A true CN103455376A (zh) 2013-12-18

Family

ID=48699347

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2013102450643A Pending CN103455376A (zh) 2012-06-20 2013-06-19 对操作系统中多个进程对现场可编程门阵列的使用的管理

Country Status (4)

Country Link
US (1) US20130346985A1 (zh)
CN (1) CN103455376A (zh)
TW (1) TW201411488A (zh)
WO (1) WO2013192231A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107818071A (zh) * 2017-09-27 2018-03-20 武汉科技大学 一种基于fpga的硬件线程实现方法
CN109902061A (zh) * 2019-02-03 2019-06-18 旋智电子科技(上海)有限公司 数字逻辑电路及微处理器

Families Citing this family (20)

* Cited by examiner, † Cited by third party
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
US9424019B2 (en) 2012-06-20 2016-08-23 Microsoft Technology Licensing, Llc Updating hardware libraries for use by applications on a computer system with an FPGA coprocessor
US9298438B2 (en) * 2012-06-20 2016-03-29 Microsoft Technology Licensing, Llc Profiling application code to identify code portions for FPGA implementation
US9230091B2 (en) 2012-06-20 2016-01-05 Microsoft Technology Licensing, Llc Managing use of a field programmable gate array with isolated components
JP6429650B2 (ja) * 2015-01-29 2018-11-28 キヤノン株式会社 情報処理装置およびその制御方法、並びにプログラム
US9542244B2 (en) 2015-04-22 2017-01-10 Ryft Systems, Inc. Systems and methods for performing primitive tasks using specialized processors
US9411528B1 (en) 2015-04-22 2016-08-09 Ryft Systems, Inc. Storage management systems and methods
US9411613B1 (en) 2015-04-22 2016-08-09 Ryft Systems, Inc. Systems and methods for managing execution of specialized processors
CN104853077B (zh) * 2015-05-27 2017-11-07 周毅 一种广播级高速高清摄像机
US10970118B2 (en) * 2017-08-02 2021-04-06 Advanced Micro Devices, Inc. Shareable FPGA compute engine
US11086815B1 (en) * 2019-04-15 2021-08-10 Xilinx, Inc. Supporting access to accelerators on a programmable integrated circuit by multiple host processes
US11422812B2 (en) 2019-06-25 2022-08-23 Advanced Micro Devices, Inc. Method and apparatus for efficient programmable instructions in computer systems
CN110837488B (zh) * 2019-07-15 2022-10-11 华为技术有限公司 报文传输方法和装置
EP3961388A1 (de) 2020-08-26 2022-03-02 Siemens Aktiengesellschaft Computer-implementiertes verfahren und system zur dynamischen ausführung eines anwendungsprogramms durch eine plattform
CN113448762B (zh) * 2021-06-29 2022-12-27 东莞市小精灵教育软件有限公司 一种死机处理方法、系统、智能设备及存储介质
US11829767B2 (en) * 2022-01-30 2023-11-28 Simplex Micro, Inc. Register scoreboard for a microprocessor with a time counter for statically dispatching instructions
US11954491B2 (en) * 2022-01-30 2024-04-09 Simplex Micro, Inc. Multi-threading microprocessor with a time counter for statically dispatching instructions
US11829187B2 (en) * 2022-01-30 2023-11-28 Simplex Micro, Inc. Microprocessor with time counter for statically dispatching instructions
US11829762B2 (en) * 2022-01-30 2023-11-28 Simplex Micro, Inc. Time-resource matrix for a microprocessor with time counter for statically dispatching instructions
US12001848B2 (en) 2022-01-30 2024-06-04 Simplex Micro, Inc. Microprocessor with time counter for statically dispatching instructions with phantom registers

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080104601A1 (en) * 2006-10-26 2008-05-01 Nokia Corporation Scheduler for multiple software tasks to share reconfigurable hardware
US20080148227A1 (en) * 2002-05-17 2008-06-19 Mccubbrey David L Method of partitioning an algorithm between hardware and software
CN101599963A (zh) * 2009-06-10 2009-12-09 电子科技大学 网络疑似威胁信息筛选器及筛选处理方法
CN201371945Y (zh) * 2008-12-29 2009-12-30 中国航天科技集团公司烽火机械厂 基于fpga的电动舵机控制器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
KR100883655B1 (ko) * 2006-12-04 2009-02-18 삼성전자주식회사 재구성 가능한 프로세서를 갖는 문맥 교환 시스템 및 방법
CN101782893B (zh) * 2009-01-21 2014-12-24 上海芯豪微电子有限公司 可重构数据处理平台
US8368423B2 (en) * 2009-12-23 2013-02-05 L-3 Communications Integrated Systems, L.P. Heterogeneous computer architecture based on partial reconfiguration

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080148227A1 (en) * 2002-05-17 2008-06-19 Mccubbrey David L Method of partitioning an algorithm between hardware and software
US20080104601A1 (en) * 2006-10-26 2008-05-01 Nokia Corporation Scheduler for multiple software tasks to share reconfigurable hardware
CN201371945Y (zh) * 2008-12-29 2009-12-30 中国航天科技集团公司烽火机械厂 基于fpga的电动舵机控制器
CN101599963A (zh) * 2009-06-10 2009-12-09 电子科技大学 网络疑似威胁信息筛选器及筛选处理方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107818071A (zh) * 2017-09-27 2018-03-20 武汉科技大学 一种基于fpga的硬件线程实现方法
CN107818071B (zh) * 2017-09-27 2021-05-04 武汉科技大学 一种基于fpga的硬件线程实现方法
CN109902061A (zh) * 2019-02-03 2019-06-18 旋智电子科技(上海)有限公司 数字逻辑电路及微处理器
CN109902061B (zh) * 2019-02-03 2023-06-02 旋智电子科技(上海)有限公司 数字逻辑电路及微处理器

Also Published As

Publication number Publication date
WO2013192231A1 (en) 2013-12-27
TW201411488A (zh) 2014-03-16
US20130346985A1 (en) 2013-12-26

Similar Documents

Publication Publication Date Title
CN103455376A (zh) 对操作系统中多个进程对现场可编程门阵列的使用的管理
US9298438B2 (en) Profiling application code to identify code portions for FPGA implementation
CN107885762B (zh) 智能大数据系统、提供智能大数据服务的方法和设备
CN103488471A (zh) 更新硬件库以供具有fpga协处理器的计算机系统上的应用使用
CN108090731B (zh) 一种信息处理方法及设备
CN110300328B (zh) 一种视频播放控制方法、装置及可读存储介质
CN108932087B (zh) 用于移动设备的桌面分屏系统及其实现方法
CN100511156C (zh) 强制性地终止输入/输出操作阻止的线程的设备和方法
CN111831410A (zh) 任务处理方法、装置、存储介质及电子设备
CN103559087A (zh) 一种虚拟处理器之间的中断的实现方法、相关装置和系统
CN113127050B (zh) 一种应用资源打包过程监控方法、装置、设备和介质
CN105183547A (zh) 一种用户界面的任务调度方法和装置
JP6042454B2 (ja) ユーザ生成によるデータセンターの省電力
CN111831434A (zh) 资源分配方法、装置、存储介质及电子设备
US9553761B2 (en) Dynamic server to server configuration and initialization
CN113179188A (zh) 服务降级动态实现方法、装置、计算机设备及存储介质
WO2013035246A1 (ja) 仮想計算機制御装置、仮想計算機制御方法、仮想計算機制御プログラム、及び集積回路
CN111831432B (zh) Io请求的调度方法、装置、存储介质及电子设备
US20180052700A1 (en) Facilitation of guest application display from host operating system
CN111831439A (zh) Io请求的处理方法、装置、存储介质及电子设备
CN111831436A (zh) Io请求的调度方法、装置、存储介质及电子设备
CN111831462A (zh) Io请求的处理方法、装置、存储介质及电子设备
CN113495787A (zh) 资源分配方法、装置、存储介质及电子设备
CN112506592A (zh) 页面加载时长的确定方法、装置、设备和存储介质
CN113127051B (zh) 一种应用资源打包过程监控方法、装置、设备和介质

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.

WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20131218

WD01 Invention patent application deemed withdrawn after publication