CN105579959A - 硬件加速器虚拟化 - Google Patents
硬件加速器虚拟化 Download PDFInfo
- Publication number
- CN105579959A CN105579959A CN201380079813.8A CN201380079813A CN105579959A CN 105579959 A CN105579959 A CN 105579959A CN 201380079813 A CN201380079813 A CN 201380079813A CN 105579959 A CN105579959 A CN 105579959A
- Authority
- CN
- China
- Prior art keywords
- accelerator
- request
- access
- hardware
- hardware accelerator
- 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
Classifications
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
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)
- Advance Control (AREA)
Abstract
一般提供了虚拟化硬件加速的技术。在一些示例中,协同监管器组件可被配置为多路复用多个域的请求以在半虚拟化环境中访问诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)或相当的加速器的硬件加速器。超请求可用于硬件加速虚拟化,其中硬件加速模块同时加载对第一加速器应用的请求的数据的一部分和对第二加速器应用的另一请求的数据的一部分并且同时处理两个部分的数据。直接位于设备驱动器层上,协同监管器可以通过直接存储器访问(DMA)上下文切换来安排同时对硬件加速器的访问请求的部分。
Description
背景技术
除非在此处进行说明,否则此处所描述的材料不是本申请权利要求的现有技术并且不因包含在该部分中而承认是现有技术。
云计算可以指作为服务在因特网上输送的应用以及在提供那些服务的数据中心中的硬件连同系统软件,云计算近年来已经在信息技术占据了中心地位。通过虚拟化技术(云计算的组成部分)底层硬件资源可以由每个均运行其自己的操作系统(OS)的多个虚拟机或域所共享。共享硬件资源可以产生较高的硬件利用率和较低的功耗。虚拟机监控器(VMM)(有时还称为管理程序)通常负责将OS的每个运行实例与底层物理机隔离。VMM可以转换或仿真客体OS的特殊指令。
基于图形处理单元(GPU)的和基于现场可编程门阵列(FPGA)的硬件加速器也正在服务器行业变得普及。加速器加速应用的计算密集部分。将硬件加速器成功地且高效地添加到虚拟化服务器中可以使得云客户端对于各种应用得到明显加速。GPU通常较廉价且利用高级语言和应用编程接口(API)编程,这不考虑硬件细节。FGPA在许多具体应用上超越GPU。而且,执行部分运行时重构(run-timereconfiguration)的能力可以是FPGA的显著区别。
一些FPGA虚拟化解决方案会导致在单个OS上停留在多任务级。普遍的GPU虚拟化方法主要是截获API调用且将API调用重引导至主机或特权域的用户空间,导致效率降低且开销较高。另外,在一些FPGA虚拟化或GPU虚拟化解决方案中,加速器通常可以每次仅服务一个请求。
概述
本公开一般描述了虚拟化硬件加速技术。
根据一些示例,提供了各种访问虚拟化的硬件加速模块的方法。示例的方法可以包括:识别来自第一虚拟机(VM)的对能够在硬件加速模块上执行的第一加速器应用的的第一访问请求;以及识别来自第二VM的对能够在硬件加速模块上执行的第二加速器应用的第二访问请求。该方法还可以包括:利用协同监管器来安排第一访问请求和第二访问请求。该方法可以进一步包括:通过将对所述第一加速器应用的所述第一访问请求的至少一部分和对所述第二加速器应用的所述第二访问请求的一部分加载且同时处理所述访问请求的第一部分和第二部分来使所述硬件加速模块处理至少所述第一访问请求的所述一部分和所述第二访问请求的所述一部分。
根据其它示例,描述了虚拟化硬件加速模块的各种协同监管器。示例的协同监管器可以包括能够在处理器上执行的请求插入模块。该请求插入模块可被配置为识别来自第一虚拟机(VM)的对能够在硬件加速模块上执行的第一加速器应用的的第一访问请求;以及识别来自第二VM的对能够在硬件加速模块上执行的第二加速器应用的第二访问请求。示例的协同监管器还可以包括能够在同一处理器上执行的排程模块。该排程模块可被配置为安排第一访问请求和第二访问请求。协同监管器可被配置为:通过将对所述第一加速器应用的所述第一访问请求的至少一部分和对所述第二加速器应用的所述第二访问请求的一部分加载且同时处理所述访问请求的第一部分和第二部分来使所述硬件加速模块处理至少所述第一访问请求的所述一部分和所述第二访问请求的所述一部分。
根据另外的示例,提供了虚拟化硬件加速的各种数据中心。数据中心可以包括至少:第一虚拟机(VM)和第二VM,每个均能够操作以便能够在一个或多个物理机上执行;硬件加速模块,其被配置为执行至少第一加速器应用和第二加速器应用;以及数据中心控制器,其能够在一个或多个服务器上执行。该数据中心控制器可被配置为:识别来自第一虚拟机(VM)的对能够在硬件加速模块上执行的第一加速器应用的第一访问请求;以及识别来自第二VM的对能够在硬件加速模块上执行的第二加速器应用的第二访问请求。该数据中心控制器还可被配置为:安排第一访问请求和第二访问请求,以及通过将对所述第一加速器应用的所述第一访问请求的一部分和对所述第二加速器应用的所述第二访问请求的一部分加载且同时处理所述访问请求的第一部分和第二部分来使所述硬件加速模块处理至少所述第一访问请求的所述一部分和所述第二访问请求的所述一部分。
根据又另外的示例,非暂态计算机可读存储介质可以存储有访问数据中心处的虚拟化硬件加速模块的指令。响应于指令在一个或多个计算设备上执行,可以执行类似于本文所描述的方法。
前面的概述仅仅是示例性的,而不意在以任何方式进行限制。通过参考附图以及下面的详细说明,除了上文所描述的示例性的方案、实施例和特征之外,另外的方案、实施例和特征将变得清晰可见。
附图说明
通过下面结合附图给出的详细说明和随附的权利要求,本公开的前述特征以及其它特征将变得更加清晰。应理解的是,这些附图仅描绘了依照本公开的多个实施例,因此,不应视为对本公开范围的限制,将通过利用附图结合附加的具体描述和细节对本公开进行说明,在附图中:
图1示出了示例的基于数据中心的系统,其中可以实施硬件加速器的虚拟化;
图2示出了示例的系统,其中可以实施硬件加速器。
图3示出了示例的系统,其中可以利用协同监管器(coprovisor)来虚拟化硬件加速器;
图4示出了示例的协同监管器的实施方式;
图5示出了存储器访问上下文切换如何可用于加速加速器应用周转时间;
图6示出了在用于硬件加速器的示例的协同监管器安排的流水线操作中请求状态过渡图和直接存储器访问(DMA)读(READ)信道状态过渡图;
图7示出了通用计算设备,其可用于提供硬件加速器的虚拟化;
图8是示出可通过诸如图7中的计算设备的计算设备执行的、提供对虚拟化硬件加速器的访问的示例的方法的流程图;以及
图9示出了示例的计算机程序产品的框图,
全部依照本文所描述的至少一些实施例来布置。
具体实施方式
在下面的详细说明中,将参考附图,附图构成了详细说明的一部分。在附图中,除非上下文指出,否则相似的符号通常表示相似的部件。在详细说明、附图和权利要求中所描述的示例性实施例不意在限制。可以使用其它实施例,并且可以做出其它改变,而不偏离本文呈现的主题的精神或范围。将易于理解的是,如本文大致描述且如图中所图示的,本公开的方案能够以各种不同配置来布置、替代、组合、分离和设计,所有这些都在本文中明确地构思出。
本公开一般尤其涉及与访问或以其它方式操作虚拟化硬件加速模块有关的方法、装置、系统、设备和/或计算机程序产品。
简言之,一般描述了虚拟化硬件加速的技术。在一些示例中,协同监管器组件可被配置为多路复用多个域的请求,以在半虚拟化(paravirtualized)环境中访问诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)或相当的加速器的硬件加速器。超请求可用于硬件加速虚拟化,其中硬件加速模块同时加载对第一加速器应用的请求的数据的一部分和对第二加速器应用的另一请求的数据的一部分且同时处理这两个部分的数据。由于直接位于设备驱动器层上,协同监管器可以通过直接存储器访问(DMA)上下文切换来安排同时对硬件加速器的访问请求的部分。
实施例可以实现于涉及到多个服务器和硬件加速器的机器级或数据中心级。此外,如本文所使用的,硬件加速器可以包括例如FGPA、ASIC和类似的极大规模集成(VLSI)电路。在数据中心实施方式中,在一个或多个物理服务器上执行的多个虚拟机(VM)可以将请求提交给一个或多个硬件加速器(例如,FPGA),其中请求可由协同监管器来安排。
如本文所使用的数据中心可以是指通过一个或多个物理服务器装置以及在那些服务器装置中执行的一个或多个虚拟机来为客户提供(host)服务和应用的实体。数据中心的客户,也称为租户,可以是为多个用户提供对他们的服务的访问权的组织。一个示例的配置可以包括执行由一个或多个数据中心所提供的例如金融市场或科学计算中所使用的那些计算密集型计算的应用,其中数据中心(多个)可以采用加速。因此,客户可以在一个或多个网络上通过诸如浏览器的客户应用来与零售服务的那些应用通信以及接收所提供的服务,而不需要实现实际上执行各个应用。该方案与每个服务提供商将执行他们的应用且使他们的用户访问在物理地定位于零售服务场所(premises)之上的零售服务的自身服务器上的那些应用的配置形成对比。
图1示出了依照本文所描述的至少一些实施例布置的示例的基于数据中心的系统,其中可以实施硬件加速器的虚拟化。
如示意图100所示,物理数据中心102可以包括一个或多个物理服务器110、111和113,其中每个物理服务器均可被配置为提供一个或多个虚拟机104。例如,物理服务器111和113可配置为分别提供四个虚拟机和两个虚拟机。在一些实施例中,一个或多个虚拟机可以组合成一个或多个虚拟数据中心。例如,由服务器111提供的四个虚拟机可组合成一个虚拟数据中心112。虚拟机104和/或虚拟数据中心112可被配置为经由云106将云相关数据/计算服务(诸如各种应用、数据存储、数据处理或类似物)提供给一组客户108(诸如在计算设备处的个体客户或企业客户)。
在一些示例中,半虚拟化的FPGA(pvFPGA)加速器115可实施为物理数据中心102的部分(或者在该物理数据中心102之外)并且可以使用共享存储器用于VM之间的数据传输。VM可以通过一个调用来访问FPGA加速器115,而典型的GPU实施方式可以采用若干API调用。而且,不同于在GPU虚拟化中,多路复用方案可以为不同的VM供给不同的最大数据传输带宽。用于VM的不同的最大数据传输带宽可通过共享数据池的尺寸的调整来实现。协同监管器可以管理设备驱动器层处FPGA加速器115的多路复用。另外,DMA上下文切换可以使FPGA加速器115能够同时服务多于一个的请求。
图2示出了依照本文所描述的至少一些实施例布置的示例系统,其中可以实施硬件加速器。
如示意图200所示,物理服务器202(例如,图1中的物理服务器110、111或113)可以被配置为执行多个虚拟机,诸如第一虚拟机204、第二虚拟机208和其它虚拟机(未示出)。每个虚拟机均可以执行一个或多个应用。例如,第一虚拟机204可以执行第一应用(app1)206,第二虚拟机208可以执行第二应用(app2)210。虚拟机管理器(VMM)212可以被配置为管理虚拟机。
物理服务器202还可以包括硬件加速模块218。硬件加速模块218可被配置为实施硬件加速器,以提高计算效率且降低用于可并行处理或应用的操作成本。在一些实施例中,硬件加速模块218可以包括FPGA、ASIC或具有多个逻辑单元或数字单元的类似集成电路,其可以组合而形成具有各种特征或功能的电路和/或处理器。配置控制器214可被配置为将一个或多个硬件加速器(例如,作为一个或多个配置件或配置文件,在下文中更详细说明)加载到硬件加速模块218上。在一些实施例中,每个加载到硬件加速模块218上的硬件加速器可以与在虚拟机上实施的一个或多个应用相关联。例如,一个硬件加速器可以与第一应用(app1)206相关联,另一硬件加速器可以与第二应用(app2)210相关联。在一些实施例中,虚拟机204、208可以通过例如经由共享系统存储器220传送数据而将它们的计算负载的部分传输给硬件加速模块218上的关联的硬件加速器。这可以提高虚拟机204、208和应用206、210的计算效率以及速度。
在一些实施例中,配置控制器214可被配置为基于一个或多个配置程序或配置件216将硬件加速器加载到硬件加速模块218上。配置件216可以包括用于待加载到硬件加速模块218上的硬件加速器的描述文件。例如,配置件216中的描述文件可以列出待耦合到硬件加速模块218上或者待与硬件加速模块218耦合的各数字元件以及输入/输出,从而将特定的硬件加速器加载到硬件加速模块218上。在一些实施例中,描述文件可以呈硬件描述语言(HDL)文件的形式,其可以被编译以提供网络列表文件。网络列表文件又可以包括硬件加速器电路的连接以及元件的详细列表以及。除了HDL之外的格式也可用于实施各个实施例。在一些实施例中,配置件216还可以(或者替代地)包括对应于硬件加速器的二进制文件,例如由适当的描述文件编译得到的二进制文件。
图3示出了依照本文所描述的至少一些实施例布置的示例系统,其中可利用协同监管器虚拟化硬件加速器。
如上所述,硬件加速器可以是FPGA或ASIC的部分。在一些示例中,可经由第一共享存储器空间来识别与来自第一VM的第一VM访问请求相关联的第一数据块,并且可以经由第二共享存储器空间来识别与来自第二VM的第二VM访问请求相关联的第二数据块。与第一共享存储器空间和/或第二共享存储器空间相关联的尺寸可基于与第一VM和/或第二VM相关联的优先级来调节。管理对虚拟化硬件加速器的访问的协同监管器可以利用DMA读操作使硬件加速器加载第一数据块和/或第二数据块。访问请求可以以三个阶段实施:DMA读操作阶段、加速器应用计算阶段和DMA写操作阶段。DMA读操作阶段可以与DMA写操作阶段同时实施。可以基于与第一VM访问请求相关联的第一存储器访问上下文和/或与第二VM访问请求相关联的第二存储器访问上下文来安排第一VM访问请求和第二VM访问请求。第一存储器访问上下文可以基于与第一VM访问请求相关联的请求控制块(RCB),并且第二存储器访问上下文可以基于与第二VM访问请求相关联的RCB。RCB可以是包含利用DMA安排请求所需的信息的数据结构,且由协同监管器维护。硬件加速器可以基于提供硬件加速器的状态的加速器状态字来处理第一VM访问请求的一部分和/或第二VM访问请求的一部分。访问虚拟化硬件加速器可以进一步包括从加速器状态字取回与硬件加速器相关联的设备驱动器207的状态。
示意图300显示了服务器202上的示例的实施方式。在一些示例中,服务器202可以是数据中心中的服务器。在其他示例中,硬件加速模块、控制器(例如,协同监管器)和VM可以在数据中心的不同服务器上实施。在另外的示例中,可以采用类似的配置。在示意图300的示例配置中,VM1204和VM2208可以分别执行第一应用206和第二应用210,并且包括前端驱动器207和211。VM可以分别请求它们相应的应用中待通过前端驱动器207和211作为第一加速器应用(app1)310和第二加速器应用(app2)320在硬件加速模块218上执行的部分(或全部)。为了访问硬件加速应用,VM可以将请求提交给协同监管器302,协同监管器302可以利用DMA上下文切换将请求放置在相应的队列中并且同时提交给硬件加速模块218。作为服务器硬件304的部分的共享存储器220可由协同监管器302用于安排请求。
在一些示例中,外围组件快速互连(PCIe)或类似接口可用作用于高效传输数据到主机服务器存储器以及从主机服务器存储器传输数据的通信信道和直接存储器访问(DMA)技术。不同于传统的ISA(工业标准体系结构)设备,不存在用于PCIe组件的中央DMA控制器。因此,DMA控制器可以在硬件加速模块218上实施。还称为总线主导DMA,DMA控制器可位于PCIe设备内以开始PCIe事务(transaction)。另一示例可以是,在带有快速路径互连(QPI)的非一致性存储器访问(NUMA)机器中,硬件加速模块(例如,FPGA)可以插入处理器插槽中。DMA控制器还可在硬件加速模块中用于将数据发送到QPI之上以及在QPI之上提取数据。与硬件加速模块被处置为外围设备的借助PCIe实施相比,DMA控制器可使用物理地址,而不是总线地址,用于借助QPI的存储器访问。
一些示例的实施例可以使用流动流水线。也即,可以同时实施DMA从服务器硬件304上的共享存储器220读以及DMA写入共享存储器220。加速器应用控制器330可以将来自DMA控制器的输入流动数据引导到第一加速器应用(app1)310或第二加速器应用(app2)320;多路复用第一加速器应用(app1)310和第二加速器应用(app2)320以使用DMA写信道;维护加速器状态字;当需要时提出中断。设备驱动器307可以指示协同监管器302通过在开始DMA读数据传输启动之前配置加速器状态字来将输入数据块引导到第一加速器应用(app1)310或第二加速器应用(app2)320。第一加速器应用(app1)310和第二加速器应用(app2)320两者可以同时在硬件加速模块218上为激活的。第一加速器应用(app1)310和第二加速器应用(app2)320的处理等待时间可由具体加速器应用来确定。可能的是,第一加速器应用(app1)310和第二加速器应用(app2)320两者同时完成且竞争DMA写信道。因此,硬件加速模块上的加速器应用控制器330可以负责多路复用DMA写信道用于第一加速器应用(app1)310和第二加速器应用(app2)320。
加速器状态字的使用可以增强设备驱动器307与硬件加速模块218之间的交互。更精确地,驱动器可以通过加速器状态字来获知硬件加速模块218的状态。从硬件加速模块218的视角看,加速器状态字可以向硬件加速模块218指示设备驱动器307需要什么。示例的加速器状态字可以包括32位,当一个数据块结束利用DMA读信道时,第一位(位0)指示硬件加速模块上的哪个加速器应用被选定用于接下来的数据块,且第二位由硬件加速模块来设定。当同时执行的应用中的任一个结束它们的处理时,第三位可以指示哪个应用已经完成了其对一个数据块的处理,且第四位可由硬件加速模块上的加速应用控制器330来设定。该位一经设定,即可以提出服务器中断。
借助于加速器状态字,可以区别由不同事件导致的由硬件加速模块218提出的中断。当数据块结束其对DMA读信道的使用时,硬件加速模块218可提出类型1中断。当应用(app1或app2)结束其处理时,加速器应用控制器330可以设定加速器状态字的位1并且提出另一中断(类型2中断)。中断的差异化可有助于DMA上下文切换,如下文所述的。
通过诸如授权表机制的使用VMM的各种机制,数据池可以在客体VM与特权VM之间共享。要实现数据池在VM之间的共享,在数据池中的这些共享存储器页面授权引用可以填充可充当页面目录的额外共享存储器页面。充当DMA缓存器的数据池中的共享存储器页面可以暴露于位于硬件加速模块218中的总线主导DMA控制器。
类似于数据池,命令信道(即在客体VM与特权VM之间共享的存储器页面)可以用于传输命令信息。在一些示例中,命令信道可用于传输VM需要在硬件加速模块218上使用的应用的数量以及数据池中需要被传输到硬件加速模块218的数据的尺寸,以及其他类似的信息。例如,VM可以具有4MB数据池,但是它可以请求数据池中的256KB的数据传输以用于硬件加速模块218上的处理。
根据一些示例的半虚拟化FPGA中的数据流可描述如下:(1)客体VM中的进程可以指定命令信道中的应用数量和数据尺寸,其可通过系统调用(例如,mmap)映射到进程虚拟地址空间;(2)该进程可以直接将数据放入共享数据池中,其也可以映射到进程虚拟地址空间;(3)该进程可以通知客体VM的内核空间中的前端驱动器(207或211),数据准备就绪,并且变换到睡眠状态;(4)客体VM的内核空间中的前端驱动器(207或211)可以将通知发送到特权VM的内核空间中的后端驱动器305;(5)前端驱动器(207或211)可以将请求传递到VM的核空间中的设备驱动器307,并且设备驱动器307可以根据从命令信道获得的参数来设定DMA传输数据尺寸和加速器应用数量;(6)设备驱动器可以开始FPGA加速器中的DMA控制器的启动;(7)DMA控制器可以流水线方式将数据传输到FPGA加速器中以执行计算;(8)DMA控制器可以将计算的结果传输回数据池;(9)当全部结果传输到数据池时,DMA控制器可以将中断发送到设备驱动器307;(10)后端驱动器305可以将结果准备就绪的通知发送到前端驱动器(207或211);(11)前端驱动器(207或211)可以唤醒处于睡眠状态的进程;(12)该进程可以从数据池取回结果。
图4示出了依照本文所描述的至少一些实施例布置的协同监管器的示例实施方式。图4中(以及在其他图中)所示的各元件能够可操作地彼此耦合。
在示例的数据中心环境中,能够在数据中心的一个或多个服务器上执行的数据中心控制器可结合协同监管器执行本文所描述的任务。这些任务可以包括但不限于:识别来自VM的对第一加速器应用的访问请求;识别来自VM的对第二加速器应用的访问请求;安排访问请求;以及使硬件加速模块同时处理至少对第一加速应用的访问请求的一部分和对第二加速应用的访问请求的一部分。在根据实施例的系统中,任何VM可以向硬件加速模块上的任一加速器应用发出请求。因此,安排可以是加速器应用定向的,而不是VM定向的。
如示意图400所示,示例的协同监管器302的体系结构可以包括请求插入器410、排程器420、请求移除器440以及两个或多个请求队列412和414。第一请求队列412可以用于缓存访问硬件加速模块218上的第一加速器应用(app1)310的请求。第二请求队列414可用于缓存访问硬件加速模块218上的第二加速器应用(app2)320的请求。VM(VM1204或VM2208)可以经由事件信道402通知协同监管器302,因此当在后端驱动器(图3中的后端驱动器305)处接收到事件通知时,负责将来自VM的请求插入对应的请求队列中的请求插入器410可以被调用。当请求完全被服务时,来自硬件加速模块218的中断可以通知请求移除器440从对应的请求队列中移除所服务的请求。排程器420可以负责安排来自两个请求队列412和414的请求,以通过加速器设备驱动器430来访问硬件加速模块218。在一些示例中,可以经由先入先服务(FCFS)来安排请求,即,在同一队列中的请求可由排程器420按有序的方式进行提取。
VM所共享的数据池的尺寸可隐含表示最大数据传输带宽。例如,被分配有4MB数据池的VM1204可以将每个请求多达4MB的数据传输到硬件加速模块218,而被分配有512KB数据池的VM2208可以传输每个请求多达512KB的数据。当两个VM竞争使用硬件加速模块218上的同一应用且加速程序需要发送多于512KB的数据时,VM2208会较慢,因为它需要发送更多的请求来结束整个加速。要为VM提供不同的最大数据传输带宽,分离驱动器设计者可以调节在前端/后端驱动器加载时每个VM的前端驱动器和特权VM的后端驱动器中的共享数据池的尺寸。
在一些实施例中,排程器420可以提供/执行至少:(1)将DMA读信道和DMA写信道两者的状态暴露给设备驱动器430,诸如在DMA读信道空闲或使用的情况下;(2)安排使用DMA读信道的请求,这可能需要实施DMA上下文切换;(3)维护两个队列的头请求(headrequest)的请求控制块(例如,当请求的一个缓存片段(存储一数据块)被安排使用DMA读信道时,请求状态可以由DMAWRITE来更新,并且当前的缓存器数量参数可以增加一个;(4)当请求完成使用硬件加速模块时,调用请求移除器以便移除请求。
为支持DMA上下文切换,访问硬件加速模块218的请求需要变得上下文感知。类似进程控制块(PCB)的功能,每个请求可以具有其自身的请求控制块(RCB),其可由协同监管器使用来设置DMA执行上下文。
在一些示例中,RCB可以是数据堆栈并且包括VM标识符、端口标识符、请求状态、应用数量、总缓存器数量、当前缓存器数量以及下一请求指针。VM标识符可以表示请求所源自的VM的标识符。端口标识符可以标识事件信道的端口数量并且可通过对应的事件信道来通知请求的VM。请求状态可以包括例如DMAREAD、DMAWRITE和DMAFIN(DMA已结束)。应用数量可以规定请求需要在硬件加速模块上使用哪个加速器应用(例如,0-app0、1-app1等等)。总缓存器数量可以规定请求所使用的缓存片段的总数。当前缓存器数量可规定传输到硬件加速模块所需的当前缓存片段。下一请求指针可以指向队列中的下一请求。
图5示出了依照本文所描述的至少一些实施例布置的存储器访问上下文切换如何可用于加速加速器应用周转时间。
根据示意图500所示的示例方案,在FPGA加速器上执行的两个应用app1和app2可以具有用于处理一个数据块的不同的处理时间502和504,app2具有较长的处理时间。两个处理时间可以比传输一个数据块的通信等待时间长。两个VM,即VM1和VM2可同时请求访问FPGA加速器,VM1请求app1加速,VM2请求app2加速。假设VM2的请求先到达且在VM1的请求之前被服务,则VM1的周转时间520可以是安排延时518和app1的处理时间502之和,而VM2的周转时间516可以是app2的处理时间504。两个请求的总周转时间522可以包括除了VM1的较长周转时间520之外的延时(第一请求的接收时间512与第二请求的接收时间514之差)。上述示例方案的时间显示在示意图510中。
VM1的请求可以不安排到FPGA加速器直至VM2的请求被服务,导致VM1使其请求得以服务的排程延时518。即使当数据块传输到app2进行处理时DMA读信道变得空闲,VM1的请求不得不等待被服务直至app2结束在FPGA加速器上的处理并且对服务器提出中断。可以通过DMA上下文切换来消除该不必要的排程延时。
另一方面,示意图530显示了当根据示例的方案而采用基于DMA上下文切换的排程时VM的周转时间和同一方案的总周转时间。在根据一些实施例的系统中,一旦VM2的请求结束其对DMA读信道的使用,可以通过协同监管器302来实施对VM1的请求的立即上下文切换。如示意图530所示,总周转时间536可以减少到VM2请求的处理时间,这大于VM1的处理时间502和第一请求的接收时间512与第二请求的接收时间514之差的总和。因此,虽然VM2的周转时间516保持相同,但是VM1的周转时间534减少了排程延时加上上下文切换开销时间532。DMA上下文切换开销时间532可以实质上较小,因为仅需要将一个参数(下一DMA缓存描述符的总线地址)加载到DMA控制器中。因此,VM1和总周转时间可以通过DMA上下文切换来减少,留更多空闲时间(或处理其它请求的时间)给FPGA加速器。
图6示出了依照本文所描述的至少一些实施例布置的在用于硬件加速器的示例的协同监管器安排的流水线操作中请求状态变换图和DMA读信道状态变换图。
如示意图600所示,当从VM接收到请求时,可以标有DMA读状态,这表明请求正在等待DMA读操作。如果DMA读信道处于空闲622状态,则DMA读操作可以开始(626)且DMA读信道状态可更新为忙碌624状态。当DMA读操作结束时,可以从硬件加速器接收到类型1中断(628)以释放DMA读信道,从而修改DMA读信道状态为空闲622。
根据示意图600中所示的示例性实施例,排程器可以在至少如下三种示例情况下被调用:1)新请求602插入队列中;2)接收到类型1中断;或者3)在开始DMA写操作608之后。当排程器被调用时,排程器可以首先检查DMA读信道是否空闲。如果DMA读信道空闲,则排程器可以安排对DMA读操作的请求。
当DMA读操作604结束时,类型1中断可以从硬件加速器接收到,以释放DMA读信道,从而将DMA读信道状态修改为空闲。如果在等待DMA读操作的另一队列中存在请求,则可以重新开始DMA读操作。当接收到类型2中断时,带DMA写状态的请求的上下文可以加载到DMA控制器中,以实施DMA写操作,并且当前缓存器数量可以增加一个。如果两个队列的两个头请求均处于DMA写状态,则预定义位(例如,由加速器应用控制器330设定的加速器状态字432中的位)可以向排程器表明哪个请求已经结束在硬件加速器上的处理。
DMA写操作开始之后可以有两种情况。在一种情况中,请求仍不能完全被服务。也即,在与未结束请求相关联的DMA缓存片段中仍可以存在一些数据。在该情况下,在开始DMA写操作之后,请求的状态可以更新为DMA读。在另一情况中,请求已经完成了其数据处理(当前缓存器数量=总缓存器数量)。在该情况下,请求可标有DMA结束状态,并且请求移除器可以被调用,以从相关队列中移除该结束的请求。
上文利用具体值、参数和配置描述了各种示例的实施例。这些示例仅为了图示说明的目的,不意在构成对实施例的限制。使用本文所描述的原理,实施例可以由任何合理值和适合的参数以及配置来实现。
图7示出了依照本文所描述的至少一些实施例的通用计算设备,其可用于提供硬件加速器的虚拟化。
在最基本的配置702中,计算设备700典型地包括一个或多个处理器704以及系统存储器706。存储器总线708可用于处理器704与系统存储器706之间通信。
取决于所期望的配置,处理器704可以是任意类型,包括但不限于微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)或其任意组合。处理器704可以包括诸如一级高速缓冲存储器712的一级或多级高速缓存、处理器核714和寄存器716。示例的处理器核714可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSPCore)或其任意组合。示例的存储器控制器718还能够与处理器704一起使用,或者在一些实现方式中,存储器控制器718可以是处理器704的内部部件。
根据所需的配置,系统存储器706可以是任意类型,包括但不限于易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪速存储器等)或其任意组合。系统存储器706可以包括操作系统720、协同监管器722以及程序数据724。协同监管器722可以包括请求插入模块725、排程器模块726和请求队列日期728。协同监管器722在结构和功能上可类似于图3或图4的协同监管器302。请求插入模块725在结构和功能上可类似于图4中的请求插入器410。排程器模块726在结构和功能上可类似于图4的排程器420。请求插入模块725可以识别来自VM的对能够在硬件加速模块上执行的第一加速器应用的访问请求以及来自VM的对能够在硬件加速模块上执行的第二加速器应用的访问请求。排程器模块726可以安排访问请求。程序数据724可以包括上文结合至少图1至图6所描述的共享数据727和类似数据。该数据可用于提供对本文所描述的虚拟化硬件加速器的访问。该所描述的基本配置702通过内虚线框内的那些组件图示于图7中。在一些示例中,计算设备700可以实现为数据中心处的服务器或其它网络服务。
计算设备700可具有附加的特征或功能以及附加的接口,以便于基本配置702与任何所需的设备和接口之间的通信。例如,总线/接口控制器730可用于利于基本配置702与一个或多个数据存储设备732之间经由存储接口总线734的通信。数据存储设备732可以是可移除存储设备736、非可移除存储设备738或者其组合。可移除存储设备和非可移除存储设备的示例包括诸如软盘驱动器和硬盘驱动器(HDD)的磁盘设备、诸如压缩盘(CD)驱动器或数字多功能盘(DVD)驱动器的光盘驱动器、固态驱动器(SSD)和磁带驱动器,仅列举了几个。示例的计算机存储介质可以包括以用于诸如计算机可读指令、数据结构、程序模块或其它数据的信息的存储的任何方法或技术实现的易失性和非易失性的介质以及可移除和非可移除的介质。
系统存储器706、可移除存储设备736和非可移除存储设备738是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪速存储器(flashmemory)或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储设备、磁盒、磁带、磁盘存储设备或其它磁存储设备、或者可用于存储所需信息并且可由计算设备700访问的任何其它介质。任意这样的计算机存储介质可以是计算设备700的部件。
计算设备700还可以包括接口总线740,该接口总线用于方便从各接口设备(例如,输出设备742、外围设备接口750和通信设备760)经由总线/接口控制器730到基本配置702的通信。示例的输出设备742包括图形处理单元744和音频处理单元746,其可配置为经由一个或多个A/V端口752与诸如显示器或扬声器的各外部设备通信。示例的外围设备接口744包括串行接口控制器754或并行接口控制器756,其可配置为经由一个或多个I/O端口758与诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其它外围设备(例如,打印机、扫描仪等)的外部设备通信。示例的通信设备760包括网络控制器762,其可布置成便于经由一个或多个通信端口764通过网络通信链路与一个或多个计算设备766的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可通过计算机可读指令、数据结构、程序模块或诸如载波或其它传输机制的调制数据信号中的其它数据来具体化,并且可以包括任何信息输送介质。“调制数据信号”可以是使得其特性中的一个或多个以将信号中的信息编码的方式设定或改变的信号。通过举例而不是限制的方式,通信介质可以包括诸如有线网络或直接线连接的有线介质,以及诸如声波、射频(RF)、微波、红外(IR)和其它无线介质的无线介质。如本文所使用的术语计算机可读介质可以包括存储介质和通信介质两者。
计算设备700可实现为物理服务器、虚拟服务器、云计算、或包括上述任意功能的混合设备的一部分。计算设备700还可以实现为包括膝上型计算机和非膝上型计算机配置两者的个人计算机。而且,计算设备700可以实现为网络系统或者通用或专用及服务器的部分。
用于包含计算设备700的网络系统的网络可以包括服务器、客户端、交换机、路由器、调制解调器、因特网服务提供商以及任何适合的通信介质(例如,有线或无线通信)的任何拓扑结构。根据实施例的系统可以具有静态或动态网络拓扑。网络可以包括诸如企业网络(例如,LAN、WAN或WLAN)的安全网络、诸如无线开放网络(例如,IEEE802.11无线网络)的非安全网络或者世界范围网络(例如,因特网)。网络还可以包括适于一起操作的多个不同的网络。这些网络被配置为提供本文所描述的节点之间的通信。通过示例而不是限制的方式,这些网络可以包括诸如声波、RF、红外或其它无线介质的无线介质。此外,网络可以是同一网络或分离的网络的部分。
示例性实施例还可以包括提供硬件加速器的虚拟化的方法。这些方法能够以任意多种方式来实现,包括本文所描述的结构。一种这样的方式是通过在本公开中描述的类型的设备的机器操作。另一可选方式是结合一个或多个人类操作员执行一些操作而其它操作由机器执行来执行方法的各个操作中的一个或多个。这些人类操作员无需彼此共定位,但是各自能够仅有执行程序的一部分的机器。在其它示例中,人类交互能够诸如通过机器自动化的预选标准而自动化。
图8是示出依照本文所描述的至少一些实施例布置的可通过诸如图7的计算设备的计算设备来执行提供对虚拟化硬件加速器访问的示例的方法的流程图。
示例的方法可以包括如框822至828中的一个或多个所图示的一个或多个操作、功能或动作,并且在一些实施例中由诸如图7的计算设备700的计算设备来执行。在框822-828中所描述的操作还可以作为计算机可执行指令存储在诸如计算设备810的计算机可读介质820的非暂态计算机可读介质中。
提供对虚拟化硬件加速器的访问的示例方法可以开始于框822,“识别来自VM的对第一加速器应用的第一访问请求”,其中请求插入器410可以识别或者接收来自VM的对在诸如FPGA的硬件加速器上的加速器应用的访问请求。
框822之后可以是框824,“识别来自第二VM的对第二加速器应用的第二访问请求”,其中请求插入器410可以识别在来自另一VM的对硬件加速器上另一加速器应用的另一访问请求。在常规的虚拟化系统中,该两个请求可以顺序地处置。
框824之后可以是框826,“通过协同监管器来安排第一访问请求和第二访问请求”,其中排程器420可以安排两个VM的接收的请求。
框826之后可以是框828,“通过协同监管器来安排第一访问请求和第二访问请求”,其中“通过将对第一加速器应用的第一访问请求的一部分和对第二加速器应用的第二访问请求的一部分加载且同时处理访问请求的第一部分和第二部分来使硬件加速模块处理第一访问请求的一部分和第二访问请求的一部分”,其中协同监管器302可以通过使用例如DMA上下文切换或类似技术而允许硬件加速模块218同时处理请求的部分或全部。
包含在上述图8中的过程中的操作仅为示例的目的。对虚拟化硬件加速器的访问可以通过具有较少或附加操作的类似过程来实现,例如,可以添加进一步的优化操作。在一些示例中,可以按不同的顺序执行操作。在一些其它示例中,可以消除各种操作。在另外的示例中,各种操作可以划分成额外的操作或者补充额外的操作,或者组合在一起成为较少的操作。虽然图示为顺序排序的操作,在一些实施方式中,各种操作可以按不同的顺序来执行,或者在一些情况下,可以基本同时执行各种操作。
图9示出了依照本文所描述的至少一些实施例布置的示例的计算机程序产品的框图。
在一些示例中,如图9所示,计算机程序产品900可以包括信号承载介质902,其还可以包括机器可读指令904,当响应于由例如处理器执行指令时,可以提供上文参考图1至图6所描述的特征。因此,例如,参考处理器704,响应于由介质902传送到处理器704的指令904可以进行图9所示的一个或多个任务,从而执行与如本文所述的访问虚拟化硬件加速器相关联的动作。那些指令中的一些可以包括:识别来自VM的对第一加速器应用的第一访问请求;识别来自VM的对第二加速器应用的第二访问请求;通过协同监管器来安排第一访问请求和第二访问请求;和/或通过将对第一加速器应用的第一访问请求的一部分和对第二加速器应用的第二访问请求的一部分加载且同时处理访问请求的第一部分和第二部分来使硬件加速模块处理第一访问请求的一部分和第二访问请求的一部分。
在一些实施方式中,图9所描绘的信号承载介质902可以包含计算机可读介质906,诸如但不限于硬盘驱动器、压缩盘(CD)、数字视频盘(DVD)、数字磁带、存储器等。在一些实施方式中,信号承载介质902可以包含可记录介质908,诸如但不限于存储器、读/写(R/W)CD、R/WDVD,等等。在一些实施方式中,信号承载介质902可以包含通信介质910,诸如但不限于数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。因此,例如,程序产品900可以通过RF信号承载介质902传送到处理器904,其中信号承载介质902由无线通信介质910(例如,符合IEEE802.11标准的无线通信介质)来传送。
根据一些示例,提供了访问虚拟化硬件加速模块的方法。示例的方法可以包括:识别来自第一虚拟机(VM)的对能够在硬件加速模块上执行的第一加速器应用的第一访问请求,以及识别来自第二VM的对能够在硬件加速模块上执行的第二加速器应用的第二访问请求。该方法还可以包括:通过将对第一加速器应用的第一访问请求的一部分和对第二加速器应用的第二访问请求的一部分加载且同时处理访问请求的第一部分和第二部分来使硬件加速模块处理至少第一访问请求的一部分和第二访问请求的一部分。
在其它示例中,第一VM和第二VM可以相同。硬件加速模块可以是现场可编程门阵列(FPGA)或专用集成电路(ASIC)的部分。第一加速器应用和第二加速器应用能够同时在硬件加速模块上执行。
可经由第一共享存储器空间来识别与第一访问请求相关联的第一数据块,可经由第二共享存储器空间来识别与第二访问请求相关联的第二数据块。第一和第二共享存储器空间可以包括用于在VM间数据传输和VM中的用户内核空间数据传输的一组物理存储器页面,并且第一和第二共享存储器空间可由硬件加速模块访问,用于数据提取和写回。可以基于与第一VM和/或第二VM相关联的优先级来调节与第一共享存储器空间和/或第二共享存储器空间相关联的尺寸。
在进一步的示例中,对第一和第二加速器应用的第一和第二访问请求可以在直接存储器访问(DMA)读操作阶段、加速器应用计算阶段和DMA写操作阶段中执行,其中DMA读操作阶段和DMA写操作阶段可以基本同时实施。安排第一访问请求和第二访问请求可以包括基于与第一加速器应用相关联的第一存储器访问上下文和/或与第二加速器应用相关联的第二存储器访问上下文来安排第一访问请求和第二访问请求。第一存储器访问上下文和第二存储器访问上下文可以基于与分别访问第一加速器应用和第二加速器应用的第一VM或第二VM相关联的RCB。安排第一访问请求和第二访问请求可以包括通过将第一访问请求插入与第一加速器应用相关联的第一请求队列以及将第二访问请求插入与第二加速器应用相关联的第二请求队列来安排第一访问请求和第二访问请求。
在其它另外的示例中,使硬件加速模块处理可以包括:基于硬件加速模块的状态来使硬件加速模块处理第一访问请求的一部分和/或第二访问请求的一部分。硬件加速模块的状态和/或与硬件加速模块相关联的设备驱动器的状态可从加速器状态字取回。使硬件加速模块处理可以包括利用流水线处理来使硬件加速模块处理第一访问请求的部分和/或第二访问请求的部分。流水线处理可以包括:增加与用于第一加速器应用和/或第二加速器应用的计算内核相关联的计算频率;增加与第一加速器应用和/或第二加速器应用相关联的计算内核的数量;延迟与第一加速器应用和/或第二加速器应用相关联的存储器读操作的开始时间;延迟与第一加速器应用和/或第二加速器应用相关联的计算操作的开始时间;和/或同时执行与分别对第一加速器应用和对第二加速器应用的第一访问请求或第二访问请求相关联的存储器访问读操作和存储器访问写操作。
根据一些实施例,描述了被配置为虚拟化硬件加速模块的协同监管器。示例的协同监管器可以包括能够在处理器上执行的请求插入模块。该请求插入模块可被配置为识别来自第一虚拟机(VM)的对能够在硬件加速模块上执行的第一加速器应用的第一访问请求,以及识别来自第二VM的对能够在硬件加速模块上执行的第二加速器应用的第二访问请求。示例的协同监管器还可以包括能够在同一处理器上执行的排程器模块。该排程器模块可被配置为安排第一访问请求和第二访问请求。协同监管器可被配置为:通过将对第一加速器应用的第一访问请求的一部分和对第二加速器应用的第二访问请求的一部分加载且同时处理访问请求的第一部分和第二部分来使硬件加速模块处理至少第一访问请求的一部分和第二访问请求的一部分。
在其他实施例中,第一VM和第二VM可以相同。硬件加速模块可以是现场可编程门阵列(FPGA)或专用集成电路(ASIC)的部分。第一加速器应用和第二加速器应用能够同时在硬件加速模块上执行。协同监管器可进一步配置为:经由第一共享存储器空间来识别与第一访问请求相关联的第一数据块,以及经由第二共享存储器空间来识别与第二访问请求相关联的第二数据块。第一和第二共享存储器空间可以包括用于在VM间数据传输和VM中的用户内核空间数据传输的一组物理存储器页面,并且第一和第二共享存储器空间可由硬件加速模块访问,用于数据提取和写回。
在进一步的实施例中,协同监管器可进一步配置为:基于与第一VM和/或第二VM相关联的优先级来调节与第一共享存储器空间和/或第二共享存储器空间相关联的尺寸。对第一和第二加速器应用的第一和第二访问请求可以在直接存储器访问(DMA)读操作阶段、加速器应用计算阶段和DMA写操作阶段中执行,其中DMA读操作阶段和DMA写操作阶段可以基本同时实施。排程器模块可配置为基于与第一加速器应用相关联的第一存储器访问上下文和/或与第二加速器应用相关联的第二存储器访问上下文来安排第一VM访问请求和第二VM访问请求。第一存储器访问上下文和第二存储器访问上下文可以基于与分别访问第一加速器应用和第二加速器应用的第一VM或第二VM相关联的RCB。排程器模块可配置为:通过将第一访问请求插入与第一加速器应用相关联的第一请求队列以及将第二访问请求插入与第二加速器应用相关联的第二请求队列来安排第一VM访问请求和第二VM访问请求。
在其它另外的实施例中,协同监管器可配置为:基于硬件加速模块的状态来使硬件加速模块处理第一访问请求的一部分和/或第二访问请求的一部分,其中协同监管器可配置为从加速器状态字取回硬件加速模块的状态和/或与硬件加速模块相关联的设备驱动器的状态。协同监管器可配置为通过流水线处理来使硬件加速模块处理第一访问请求的部分和/或第二访问请求的部分。流水线处理可以包括:增加与用于第一加速器应用和/或第二加速器应用的计算内核相关联的计算频率;增加与第一加速器应用和/或第二加速器应用相关联的计算内核的数量;延迟与第一加速器应用和/或第二加速器应用相关联的存储器读操作的开始时间;延迟与第一加速器应用和/或第二加速器应用相关联的计算操作的开始时间;和/或同时执行与分别对第一加速器应用和对第二加速器应用的第一访问请求或第二访问请求相关联的存储器访问读操作和存储器访问写操作。
根据一些示例,描述了被配置为虚拟化硬件加速的数据中心。该数据中心可以包括至少:第一虚拟机(VM)和第二VM,每个均可操作以便能够在一个或多个物理机上执行;硬件加速模块,其被配置为执行至少第一加速器应用和第二加速器应用;以及数据中心控制器,其能够在一个或多个服务器上执行。该数据中心控制器可被配置为识别来自第一虚拟机(VM)的对能够在硬件加速模块上执行的第一加速器应用的第一访问请求,以及识别来自第二VM的对能够在硬件加速模块上执行的第二加速器应用的第二访问请求。该数据中心控制器还可被配置为安排第一访问请求和第二访问请求,并且通过将对第一加速器应用的第一访问请求的一部分和对第二加速器应用的第二访问请求的一部分加载且同时处理访问请求的第一部分和第二部分来使硬件加速模块处理至少第一访问请求的一部分和第二访问请求的一部分。
在其它示例中,第一VM和第二VM可以相同。硬件加速模块可以是现场可编程门阵列(FPGA)或专用集成电路(ASIC)的部分。第一加速器应用和第二加速器应用能够同时在硬件加速模块上执行。控制器可进一步配置为:经由第一共享存储器空间来识别与第一访问请求相关联的第一数据块,以及经由第二共享存储器空间来识别与第二访问请求相关联的第二数据块。第一和第二共享存储器空间可以包括用于在VM间数据传输和VM中的用户内核空间数据传输的一组物理存储器页面,并且第一和第二共享存储器空间可由硬件加速模块访问,用于数据提取和写回。控制器可进一步配置为:基于与第一VM和/或第二VM相关联的优先级来调节与第一共享存储器空间和/或第二共享存储器空间相关联的尺寸。
在进一步的示例中,对第一和第二加速器应用的第一和第二访问请求可以在直接存储器访问(DMA)读操作阶段、加速器应用计算阶段和DMA写操作阶段中执行,其中DMA读操作阶段和DMA写操作阶段可以基本同时实施。控制器可配置为基于与第一加速器应用相关联的第一存储器访问上下文和/或与第二加速器应用相关联的第二存储器访问上下文来安排第一VM访问请求和第二VM访问请求。第一存储器访问上下文和第二存储器访问上下文可以基于与分别访问第一加速器应用和第二加速器应用的第一VM或第二VM相关联的RCB。控制器可配置为:通过将第一访问请求插入与第一加速器应用相关联的第一请求队列以及将第二访问请求插入与第二加速器应用相关联的第二请求队列来安排第一VM访问请求和第二VM访问请求。
在其它的进一步的示例中,硬件加速模块可进一步配置为基于硬件加速模块的状态来处理第一访问请求的部分和/或第二访问请求的部分,其中控制器可以进一步配置为从加速器状态字来取回硬件加速模块的状态和/或与硬件加速模块相关联的设备驱动器的状态。硬件加速模块可配置为通过流水线处理来处理第一访问请求的部分和/或第二访问请求的部分。流水线处理可以包括:增加与用于第一加速器应用和/或第二加速器应用的计算内核相关联的计算频率;增加与第一加速器应用和/或第二加速器应用相关联的计算内核的数量;延迟与第一加速器应用和/或第二加速器应用相关联的存储器读操作的开始时间;延迟与第一加速器应用和/或第二加速器应用相关联的计算操作的开始时间;和/或同时执行与分别对第一加速器应用和对第二加速器应用的第一访问请求或第二访问请求相关联的存储器访问读操作和存储器访问写操作。
根据又另外的示例,非暂态计算机可读存储介质可以存储访问数据中心处虚拟化硬件加速模块的指令。响应于指令在一个或多个计算设备上执行,可以执行类似于本文所述的方法。
在系统方案的硬件实现和软件实现之间保留了极小的区别;硬件或软件的使用通常是(但并不总是,因为在一些背景下硬件和软件之间的选择会变得重要)表示成本相对于效率权衡的设计选择。存在各种可以实现(例如,硬件、软件和/或固件)本文所描述的过程和/或系统和/或其它技术的媒介物,并且优选的媒介物将随着部署过程和/或系统和/或其它技术的背景而变化。例如,如果实施者判定速度和精度重要,则实施者可以选择主硬件和/或固件媒介物;如果灵活性重要,则实施者可以选择主软件实现;或者,另外可选地,实施者可以选择硬件、软件和/或固件的一些组合。
前面的详细说明已经通过框图、流程图和/或示例阐述了设备和/或过程的各个实施例。在这些框图、流程图和/或示例包含一项或多项功能和/或操作的程度上,本领域技术人员将理解的是可以通过各种各样的硬件、软件、固件或几乎其任意组合来单独地和/或统一地实现这些框图、流程图或示例内的每项功能和/或操作。在一个实施例中,本文所描述的主题的多个部分可经由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它集成格式来实现。然而,本领域技术人员将理解的是,在本文公开的实施例的一些方案可以整体地或部分地等同地实现为集成电路、在一个或多个计算机上运行的一个或多个计算机程序(例如,实现为在一个或多个计算机系统上运行的一个或多个程序)、在一个或多个处理器上运行的一个或多个程序(例如,实现为在一个或多个微处理器上运行的一个或多个程序)、固件、或几乎任何组合,并且根据本公开的内容,设计电路和/或编写用于软件和/或固件的代码将在本领域技术人员的技能范围内。
本公开不受在本申请中所描述的特定实施例限制,这些特定实施例意在为各个方案的示例。本领域技术人员显而易见的是,能够进行各种改进和变型,而不偏离其精神和范围。根据前面的说明,除了本文列举的那些之外,在本公开范围内的功能上等同的方法和装置对于本领域技术人员而言将是显而易见的。旨在这些改进方案和变型例落在随附权利要求书的范围内。连同这些权利要求书所给予权利的等同方案的整个范围内,本公开仅受随附权利要求书限制。还应理解的是,本文所使用的术语仅是为了描述特定实施例的目的,而不意在限制。
另外,本领域技术人员将理解的是,本文所描述的主题的机制能够以各种形式分布为程序产品,并且本文所描述的主题的示例性实施例适用,无论实际上用于实施分布的特定类型的信号承载介质如何。信号承载介质的示例包括但不限于以下:可记录型介质,诸如软盘、硬盘驱动器、压缩盘(CD)、数字多功能盘(DVD)、数字带、计算机存储器等;以及传输型介质,诸如数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。
本领域技术人员将理解的是,在本领域内常见的是以本文阐述的方式来描述设备和/或过程,此后利用工程实践将这些所描述的设备和/或过程集成到数据处理系统中。也即,本文所描述的设备和/或过程的至少一部分可以通过合理量的实验集成到数据处理系统中。本领域技术人员将理解的是,典型的数据处理系统通常包括如下中的一种或多种:系统单元壳体、视频显示设备、诸如易失性和非易失性存储器的存储器、诸如微处理器和数字信号处理器的处理器、诸如操作系统的计算实体、驱动器、图形用户接口、和应用程序、诸如触摸板或触摸屏的一个或多个交互设备、和/或包括反馈环和控制电动机(例如,用于感测门架系统的位置和/或速度的反馈;用于移动和/或调整部件和/或量的控制电动机)的控制系统。
典型的数据处理系统可利用任何适合的商业上提供的部件来实现,诸如在数据计算/通信和/或网络计算/通信系统中常见的部件。本文所描述的主题有时说明了包含在不同的其它部件内的不同部件或与不同的其它部件连接的不同部件。应理解的是,这些所描绘的体系结构仅是示例性的,并且实际上可以实施实现相同功能的许多其它体系结构。在概念意义上,实现相同功能的任何部件的布置有效地“关联”,使得实现期望功能。因此,在此处组合以实现特定功能的任何两个部件可视为彼此“关联”,使得实现期望功能,无论体系结构或中间部件如何。同样,任意两个如此关联的部件还可视为彼此“可操作地连接”、或“可操作地耦合”以实现期望的功能,并且能够如此关联的任意两个部件还可视为彼此“能够可操作地耦合”以实现期望功能。能够可操作耦合的具体示例包括但不限于能够物理上连接和/或物理交互的部件和/或能够无线交互和/或无线交互的部件和/或逻辑上交互和/或能够逻辑上交互的部件。
关于本文中基本上任何复数和/或单数术语的使用,本领域技术人员能够根据上下文和/或应用适当地从复数变换成单数和/或从单数变换成复数。为了清晰的目的,本文中明确地阐明了各单数/复数的置换。
本领域技术人员将理解,一般地,本文所使用的术语,尤其是随附权利要求(例如,随附权利要求的主体)中所使用的术语,通常意在为“开放式”术语(例如,术语“包括”应当解释为“包括但不限于”,术语“具有”应解释为“至少具有”,术语“包括”应解释为“包括但不限于”,等等)。本领域技术人员还理解,如果意图表达引导性权利要求记述项的具体数量,该意图将明确地记述在权利要求中,并且在不存在这种记述的情况下,不存在这样的意图。例如,为辅助理解,下面的随附权利要求可能包含了引导性短语“至少一个”和“一个或多个”的使用以引导权利要求记述项。然而,这种短语的使用不应解释为暗指不定冠词“一”或“一个”引导权利要求记述项将包含该所引导的权利要求记述项的任何特定权利要求局限于仅包含一个该记述项的实施例,即使当同一权利要求包括了引导性短语“一个或多个”或“至少一个”以及诸如不定冠词“一”或“一个”的(例如,“一”和/或“一个”应当解释为表示“至少一个”或“一个或多个”);这同样适用于对于用于引导权利要求记述项的定冠词的使用。另外,即使明确地记述了被引导的权利要求记述项的具体数量,本领域技术人员将理解到这些记述项应当解释为至少表示所记述的数量(例如,没有其它修饰语的裸记述“两个记述项”表示至少两个记述项或两个以上的记述项)。
此外,在使用类似于“A、B和C等中的至少一个”的惯用法的那些实例中,通常这样的构造旨在表达本领域技术人员理解该惯用法的含义(例如,“具有A、B和C中的至少一个的系统”将包括但不限于仅具有A、仅具有B、仅具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B和C等等的系统)。本领域技术人员将进一步理解,呈现两个以上可选项的几乎任何分离词和/或短语,无论是在说明书、权利要求或附图中,都应理解为设想包括一项、任一项或两项的可能性。例如,术语“A或B”将理解为包括“A”或“B”或“A和B”的可能性。
本领域技术人员将理解的是,为了任何以及全部的目的,诸如在提供所撰写的说明书方面,本文所公开的全部范围也涵盖了任何和全部的可能的子范围及其子范围的组合。能够容易地认识到任何所列范围都充分地描述了同一范围并且使同一范围分解成至少均等的一半、三分之一、四分之一、五分之一、十分之一等等。作为非限制示例,本文所论述的每个范围能够容易地分解成下三分之一、中三分之一和上三分之一,等等。本领域技术人员还将理解的是,诸如“多达”、“至少”、“大于”、“小于”等所有的语言包括所记述的数量并且是指如上文所论述的随后能够分解成子范围的范围。最后,本领域技术人员将理解的是,范围包括每个独立的成员。因此,例如,具有1-3个单元的组是指具有1个、2个或3个单元的组。类似地,具有1-5个单元的组是指具有1个、2个、3个、4个、或5个单元的组,等等。
虽然本文公开了各个方案和实施例,但是其它的方案和实施例对于本领域技术人员而言将是显而易见的。因此,本文所公开的各个方案和实施例是为了示例的目的而不意在限制,真正的范围和精神是通过随附的权利要求表示的。
Claims (45)
1.一种访问虚拟化硬件加速模块的方法,所述方法包括:
识别来自第一虚拟机(VM)的对能在所述硬件加速模块上执行的第一加速器应用的第一访问请求;
识别来自第二VM的对能在所述硬件加速模块上执行的第二加速器应用的第二访问请求;
利用协同监管器来安排所述第一访问请求和所述第二访问请求;以及
通过将对所述第一加速器应用的所述第一访问请求的一部分和对所述第二加速器应用的所述第二访问请求的一部分加载且同时处理所述访问请求的第一部分和第二部分来使所述硬件加速模块处理至少所述第一访问请求的所述一部分和所述第二访问请求的所述一部分。
2.如权利要求1所述的方法,其中所述第一VM和所述第二VM相同。
3.如权利要求1所述的方法,其中所述硬件加速模块是如下之一的部分:现场可编程门阵列(FPGA)和专用集成电路(ASIC)。
4.如权利要求1所述的方法,其中所述第一加速器应用和所述第二加速器应用能够同时在所述硬件加速模块上执行。
5.如权利要求1所述的方法,进一步包括:
经由第一共享存储器空间识别与所述第一访问请求相关联的第一数据块;以及
经由第二共享存储器空间识别与所述第二访问请求相关联的第二数据块。
6.如权利要求5所述的方法,其中所述第一共享存储器空间和第二共享存储器空间包括用于VM间数据传输和VM中的用户内核空间数据传输的一组物理存储器页面,并且其中所述第一共享存储器空间和第二共享存储器空间由所述硬件加速模块访问以用于数据提取和写回。
7.如权利要求5所述的方法,进一步包括:基于与所述第一VM和所述第二VM中的至少一个相关联的优先级,调节与所述第一共享存储器空间和第二共享存储器空间中的至少一个相关联的尺寸。
8.如权利要求1所述的方法,其中对所述第一加速器应用和第二加速器应用的所述第一访问请求和第二访问请求在直接存储器访问(DMA)读操作阶段、加速器应用计算阶段和DMA写操作阶段中执行。
9.如权利要求8所述的方法,其中所述DMA读操作阶段和所述DMA写操作阶段基本同时实施。
10.如权利要求1所述的方法,其中安排所述第一访问请求和所述第二访问请求包括:基于与所述第一加速器应用相关联的第一存储器访问上下文和与所述第二加速器应用相关联的第二存储器访问上下文中的至少一个来安排所述第一访问请求和所述第二访问请求。
11.如权利要求10所述的方法,其中所述第一存储器访问上下文和所述第二存储器访问上下文基于与分别访问所述第一加速器应用和所述第二加速器应用的所述第一VM和所述第二VM中的一个相关联的RCB。
12.如权利要求1所述的方法,其中安排所述第一访问请求和所述第二访问请求包括:通过将所述第一访问请求插入与所述第一加速器应用相关联的第一请求队列以及将所述第二访问请求插入与所述第二加速器应用相关联的第二请求队列来安排所述第一访问请求和所述第二访问请求。
13.如权利要求1所述的方法,其中使所述硬件加速模块处理包括:基于所述硬件加速模块的状态,使所述硬件加速模块处理所述第一访问请求的所述一部分和/或所述第二访问请求的所述一部分。
14.如权利要求13所述的方法,进一步包括:从加速器状态字取回所述硬件加速模块的状态和与所述硬件加速模块相关联的设备驱动器的状态中的至少一个。
15.如权利要求1所述的方法,其中使所述硬件加速模块处理包括:利用流水线处理而使所述硬件加速模块处理所述第一访问请求的所述一部分和/或所述第二访问请求的所述一部分,所述流水线处理包括如下至少之一:
增加与用于所述第一加速器应用和/或所述第二加速器应用中的至少一个的计算内核相关联的计算频率;
增加与所述第一加速器应用和/或所述第二加速器应用中的至少一个相关联的计算内核的数量;
延迟与所述第一加速器应用和所述第二加速器应用中的至少一个相关联的存储器读操作的开始时间;
延迟与所述第一加速器应用和所述第二加速器应用中的至少一个相关联的计算操作的开始时间;以及
同时执行与分别对所述第一加速器应用和对所述第二加速器应用的所述第一访问请求和所述第二访问请求中的一个相关联的存储器访问读操作和存储器访问写操作。
16.一种被配置为虚拟化硬件加速模块的协同监管器,所述协同监管器包括:
请求插入模块,其能够在处理器上执行,所述请求插入模块被配置为:
识别来自第一虚拟机(VM)的对能在所述硬件加速模块上执行的第一加速器应用的第一访问请求;以及
识别来自第二VM的对能在所述硬件加速模块上执行的第二加速器应用的第二访问请求;
排程模块,其能够在同一处理器上执行,所述排程模块被配置为安排所述第一访问请求和所述第二访问请求;以及
所述协同监管器被配置为通过将对所述第一加速器应用的所述第一访问请求的一部分和对所述第二加速器应用的所述第二访问请求的一部分加载且同时处理所述访问请求的第一部分和第二部分来使所述硬件加速模块处理至少所述第一访问请求的所述一部分和所述第二访问请求的所述一部分。
17.如权利要求16所述的协同监管器,其中所述第一VM和所述第二VM相同。
18.如权利要求16所述的协同监管器,其中所述硬件加速模块是如下之一的部分:现场可编程门阵列(FPGA)和专用集成电路(ASIC)。
19.如权利要求16所述的协同监管器,其中所述第一加速器应用和所述第二加速器应用能够同时在所述硬件加速模块上执行。
20.如权利要求16所述的协同监管器,其中所述协同监管器被进一步配置为:
经由第一共享存储器空间识别与所述第一访问请求相关联的第一数据块;以及
经由第二共享存储器空间识别与所述第二访问请求相关联的第二数据块。
21.如权利要求20所述的协同监管器,其中所述第一共享存储器空间和第二共享存储器空间包括用于VM间数据传输和VM中的用户内核空间数据传输的一组物理存储器页面,并且其中所述第一共享存储器空间和第二共享存储器空间由所述硬件加速模块访问以用于数据提取和写回。
22.如权利要求20所述的协同监管器,其中所述协同监管器被进一步配置为:基于与所述第一VM和所述第二VM中的至少一个相关联的优先级,调节与所述第一共享存储器空间和第二共享存储器空间中的至少一个相关联的尺寸。
23.如权利要求16所述的协同监管器,其中对所述第一加速器应用和第二加速器应用的所述第一访问请求和第二访问请求在直接存储器访问(DMA)读操作阶段、加速器应用计算阶段和DMA写操作阶段中执行。
24.如权利要求23所述的协同监管器,其中所述DMA读操作阶段和所述DMA写操作阶段基本同时实施。
25.如权利要求16所述的协同监管器,其中所述排程模块被配置为:基于与所述第一加速器应用相关联的第一存储器访问上下文和与所述第二加速器应用相关联的第二存储器访问上下文中的至少一个来安排所述第一访问请求和所述第二访问请求。
26.如权利要求25所述的协同监管器,其中所述第一存储器访问上下文和所述第二存储器访问上下文基于与分别访问所述第一加速器应用和所述第二加速器应用的所述第一VM和所述第二VM中的一个相关联的RCB。
27.如权利要求16所述的协同监管器,其中所述排程模块被配置为:通过将所述第一访问请求插入与所述第一加速器应用相关联的第一请求队列以及将所述第二访问请求插入与所述第二加速器应用相关联的第二请求队列来安排所述第一VM访问请求和所述第二VM访问请求。
28.如权利要求16所述的协同监管器,其中所述协同监管器被配置为:基于所述硬件加速模块的状态,使所述硬件加速模块处理所述第一访问请求的所述一部分和/或所述第二访问请求的所述一部分。
29.如权利要求28所述的协同监管器,其中所述协同监管器被配置为:从加速器状态字取回所述硬件加速模块的状态和与所述硬件加速模块相关联的设备驱动器的状态中的至少一个。
30.如权利要求16所述的协同监管器,其中所述协同监管器被配置为:利用流水线处理而使所述硬件加速模块处理所述第一访问请求的所述一部分和/或所述第二访问请求的所述一部分,所述流水线处理包括如下至少之一:
增加与用于所述第一加速器应用和/或所述第二加速器应用中的至少一个的计算内核相关联的计算频率;
增加与所述第一加速器应用和/或所述第二加速器应用中的至少一个相关联的计算内核的数量;
延迟与所述第一加速器应用和所述第二加速器应用中的至少一个相关联的存储器读操作的开始时间;
延迟与所述第一加速器应用和所述第二加速器应用中的至少一个相关联的计算操作的开始时间;以及
同时执行与分别对所述第一加速器应用和对所述第二加速器应用的所述第一访问请求和所述第二访问请求中的一个相关联的存储器访问读操作和存储器访问写操作。
31.一种被配置为虚拟化硬件加速的数据中心,所述数据中心包括:
至少第一虚拟机(VM)和第二VM,每个均能够操作以便能够在一个或多个物理机上执行;
硬件加速模块,其被配置为执行至少第一加速器应用和第二加速器应用;以及
数据中心控制器,其能够在一个或多个服务器上执行,所述数据中心控制器被配置为:
识别来自第一虚拟机(VM)的对能在所述硬件加速模块上执行的第一加速器应用的第一访问请求;
识别来自第二VM的对能在所述硬件加速模块上执行的第二加速器应用的第二访问请求;
安排所述第一访问请求和所述第二访问请求;以及
通过将对所述第一加速器应用的所述第一访问请求的一部分和对所述第二加速器应用的所述第二访问请求的一部分加载且同时处理所述访问请求的第一部分和第二部分来使所述硬件加速模块处理至少所述第一访问请求的所述一部分和所述第二访问请求的所述一部分。
32.如权利要求31所述的数据中心,其中所述第一VM和所述第二VM相同。
33.如权利要求31所述的数据中心,其中所述硬件加速模块是如下之一的部分:现场可编程门阵列(FPGA)和专用集成电路(ASIC)。
34.如权利要求31所述的数据中心,其中所述第一加速器应用和所述第二加速器应用能够同时在所述硬件加速模块上执行。
35.如权利要求31所述的数据中心,其中所述控制器被进一步配置为:
经由第一共享存储器空间识别与所述第一访问请求相关联的第一数据块;以及
经由第二共享存储器空间识别与所述第二访问请求相关联的第二数据块。
36.如权利要求35所述的数据中心,其中所述第一共享存储器空间和第二共享存储器空间包括用于VM间数据传输和VM中的用户内核空间数据传输的一组物理存储器页面,并且其中所述第一共享存储器空间和第二共享存储器空间由所述硬件加速模块访问以用于数据提取和写回。
37.如权利要求35所述的数据中心,其中所述控制器被进一步配置为:基于与所述第一VM和所述第二VM中的至少一个相关联的优先级,调节与所述第一共享存储器空间和第二共享存储器空间中的至少一个相关联的尺寸;以及
其中对所述第一加速器应用和第二加速器应用的所述第一访问请求和第二访问请求在直接存储器访问(DMA)读操作阶段、加速器应用计算阶段和DMA写操作阶段中执行。
38.如权利要求37所述的数据中心,其中所述DMA读操作阶段和所述DMA写操作阶段基本同时实施。
39.如权利要求31所述的数据中心,其中所述控制器被配置为:基于与所述第一加速器应用相关联的第一存储器访问上下文和与所述第二加速器应用相关联的第二存储器访问上下文中的至少一个来安排所述第一访问请求和所述第二访问请求。
40.如权利要求39所述的数据中心,其中所述第一存储器访问上下文和所述第二存储器访问上下文基于与分别访问所述第一加速器应用和所述第二加速器应用的所述第一VM和所述第二VM中的一个相关联的RCB。
41.如权利要求31所述的数据中心,其中所述控制器被配置为:通过将所述第一访问请求插入与所述第一加速器应用相关联的第一请求队列以及将所述第二访问请求插入与所述第二加速器应用相关联的第二请求队列来安排所述第一VM访问请求和所述第二VM访问请求。
42.如权利要求31所述的数据中心,其中所述硬件加速模块被进一步配置为:基于所述硬件加速模块的状态,处理所述第一访问请求的所述一部分和/或所述第二访问请求的所述一部分。
43.如权利要求42所述的数据中心,其中所述控制器被进一步配置为:从加速器状态字取回所述硬件加速模块的状态和与所述硬件加速模块相关联的设备驱动器的状态中的至少一个。
44.如权利要求31所述的数据中心,其中所述硬件加速模块配置为:利用流水线处理而处理所述第一访问请求的所述一部分和/或所述第二访问请求的所述一部分,所述流水线处理包括如下至少之一:
增加与用于所述第一加速器应用和/或所述第二加速器应用中的至少一个的计算内核相关联的计算频率;
增加与所述第一加速器应用和/或所述第二加速器应用中的至少一个相关联的计算内核的数量;
延迟与所述第一加速器应用和所述第二加速器应用中的至少一个相关联的存储器读操作的开始时间;
延迟与所述第一加速器应用和所述第二加速器应用中的至少一个相关联的计算操作的开始时间;以及
同时执行与分别对所述第一加速器应用和对所述第二加速器应用的所述第一访问请求和所述第二访问请求中的一个相关联的存储器访问读操作和存储器访问写操作。
45.一种其上存储有指令的计算机可读存储介质,响应于在一个或多个计算设备上的执行,所述指令执行权利要求1至15中任一项的方法以访问虚拟化硬件加速模块。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CA2013/050725 WO2015042684A1 (en) | 2013-09-24 | 2013-09-24 | Virtualization of hardware accelerator |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105579959A true CN105579959A (zh) | 2016-05-11 |
CN105579959B CN105579959B (zh) | 2019-06-07 |
Family
ID=52741664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380079813.8A Expired - Fee Related CN105579959B (zh) | 2013-09-24 | 2013-09-24 | 硬件加速器虚拟化 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10037222B2 (zh) |
CN (1) | CN105579959B (zh) |
WO (1) | WO2015042684A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108062239A (zh) * | 2016-11-09 | 2018-05-22 | 华为技术有限公司 | 一种加速器加载方法、系统和加速器加载装置 |
WO2018137363A1 (zh) * | 2017-01-24 | 2018-08-02 | 华为技术有限公司 | 一种用于调整虚拟机加速能力的加速能力调整方法及装置 |
CN109496415A (zh) * | 2018-03-23 | 2019-03-19 | 华为技术有限公司 | 一种虚拟机访问远端加速设备方法及系统 |
CN111382450A (zh) * | 2018-12-31 | 2020-07-07 | 德克萨斯仪器股份有限公司 | 安全可靠的虚拟化域特定硬件加速器 |
CN106572500B (zh) * | 2016-10-21 | 2020-07-28 | 同济大学 | 一种c-ran中硬件加速器的调度方法 |
CN112041817A (zh) * | 2018-05-08 | 2020-12-04 | 瑞典爱立信有限公司 | 用于管理借助于加速器装置的硬件加速的请求的方法和节点 |
US11221866B2 (en) | 2016-11-09 | 2022-01-11 | Huawei Technologies Co., Ltd. | Accelerator loading method, system, and apparatus |
Families Citing this family (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10270709B2 (en) | 2015-06-26 | 2019-04-23 | Microsoft Technology Licensing, Llc | Allocating acceleration component functionality for supporting services |
US9811367B2 (en) * | 2014-11-13 | 2017-11-07 | Nsp Usa, Inc. | Method and apparatus for combined hardware/software VM migration |
CN104503728B (zh) * | 2015-01-04 | 2017-11-24 | 华为技术有限公司 | 一种硬件加速器及芯片 |
US9910705B1 (en) * | 2015-02-18 | 2018-03-06 | Altera Corporation | Modular offloading for computationally intensive tasks |
US10296392B2 (en) | 2015-04-17 | 2019-05-21 | Microsoft Technology Licensing, Llc | Implementing a multi-component service using plural hardware acceleration components |
US10198294B2 (en) | 2015-04-17 | 2019-02-05 | Microsoft Licensing Technology, LLC | Handling tenant requests in a system that uses hardware acceleration components |
US9792154B2 (en) | 2015-04-17 | 2017-10-17 | Microsoft Technology Licensing, Llc | Data processing system having a hardware acceleration plane and a software plane |
US9652327B2 (en) * | 2015-04-17 | 2017-05-16 | Microsoft Technology Licensing, Llc | Restoring service acceleration |
US10511478B2 (en) | 2015-04-17 | 2019-12-17 | Microsoft Technology Licensing, Llc | Changing between different roles at acceleration components |
EP3089035A1 (en) * | 2015-04-30 | 2016-11-02 | Virtual Open Systems | Virtualization manager for reconfigurable hardware accelerators |
CN104899085B (zh) * | 2015-05-29 | 2018-06-26 | 华为技术有限公司 | 一种数据处理方法和装置 |
US10216555B2 (en) | 2015-06-26 | 2019-02-26 | Microsoft Technology Licensing, Llc | Partially reconfiguring acceleration components |
US20170083652A1 (en) * | 2015-09-18 | 2017-03-23 | Synopsys, Inc. | Saving and restoring an emulation environment |
CN105159753B (zh) * | 2015-09-25 | 2018-09-28 | 华为技术有限公司 | 加速器虚拟化的方法、装置及集中资源管理器 |
CN108141407B (zh) * | 2015-10-21 | 2021-03-19 | 英特尔公司 | 移动边缘计算动态加速分配 |
CN105389199B (zh) * | 2015-10-21 | 2019-09-27 | 同济大学 | 一种基于Xen的FPGA加速器虚拟化平台及应用 |
US9678788B2 (en) * | 2015-11-10 | 2017-06-13 | International Business Machines Corporation | Enabling poll/select style interfaces with coherent accelerators |
US20170139740A1 (en) * | 2015-11-12 | 2017-05-18 | Futurewei Technologies, Inc. | Systems and Methods for Real Time Context Based Isolation and Virtualization |
CN105446920A (zh) * | 2015-12-07 | 2016-03-30 | 中国电子科技集团公司第三十二研究所 | 基于龙芯的fpga嵌入式计算机及其配置方法 |
CN105528319B (zh) * | 2015-12-07 | 2018-08-24 | 中国电子科技集团公司第三十二研究所 | 基于fpga的加速卡及其加速方法 |
CN105630576B (zh) * | 2015-12-23 | 2019-08-20 | 华为技术有限公司 | 一种虚拟化平台中的数据处理方法及装置 |
EP3347813A4 (en) | 2016-01-05 | 2019-05-08 | Hewlett-Packard Enterprise Development LP | MESSAGE TRANSMISSION IN VIRTUAL MACHINE |
US10031760B1 (en) * | 2016-05-20 | 2018-07-24 | Xilinx, Inc. | Boot and configuration management for accelerators |
CN114217902A (zh) * | 2016-06-15 | 2022-03-22 | 华为技术有限公司 | 一种数据传输方法及装置 |
US20180069767A1 (en) * | 2016-09-06 | 2018-03-08 | Advanced Micro Devices, Inc. | Preserving quality of service constraints in heterogeneous processing systems |
US10241956B2 (en) | 2016-09-12 | 2019-03-26 | International Business Machines Corporation | Virtualizing coherent hardware accelerators |
US11099894B2 (en) * | 2016-09-28 | 2021-08-24 | Amazon Technologies, Inc. | Intermediate host integrated circuit between virtual machine instance and customer programmable logic |
US10338135B2 (en) | 2016-09-28 | 2019-07-02 | Amazon Technologies, Inc. | Extracting debug information from FPGAs in multi-tenant environments |
US10162921B2 (en) | 2016-09-29 | 2018-12-25 | Amazon Technologies, Inc. | Logic repository service |
US10282330B2 (en) | 2016-09-29 | 2019-05-07 | Amazon Technologies, Inc. | Configurable logic platform with multiple reconfigurable regions |
US10250572B2 (en) | 2016-09-29 | 2019-04-02 | Amazon Technologies, Inc. | Logic repository service using encrypted configuration data |
US10642492B2 (en) | 2016-09-30 | 2020-05-05 | Amazon Technologies, Inc. | Controlling access to previously-stored logic in a reconfigurable logic device |
US10423438B2 (en) * | 2016-09-30 | 2019-09-24 | Amazon Technologies, Inc. | Virtual machines controlling separate subsets of programmable hardware |
US11115293B2 (en) | 2016-11-17 | 2021-09-07 | Amazon Technologies, Inc. | Networked programmable logic service provider |
CN110073342A (zh) * | 2016-12-23 | 2019-07-30 | 英特尔公司 | 用于硬件加速的虚拟信道 |
US10776144B2 (en) * | 2017-01-08 | 2020-09-15 | International Business Machines Corporation | Address space management with respect to a coherent accelerator processor interface architecture |
US10540506B2 (en) * | 2017-01-12 | 2020-01-21 | Microsoft Technology Licensing, Llc | Field-programmable gate array virtualization |
US10404470B2 (en) * | 2017-01-13 | 2019-09-03 | Microsoft Technology Licensing, Llc | Signature verification of field-programmable gate array programs |
US11290392B2 (en) * | 2017-01-30 | 2022-03-29 | Intel Corporation | Technologies for pooling accelerator over fabric |
US10540294B2 (en) * | 2017-02-17 | 2020-01-21 | Red Hat Israel, Ltd. | Secure zero-copy packet forwarding |
WO2018176238A1 (en) | 2017-03-28 | 2018-10-04 | Intel Corporation | Technologies for hybrid field-programmable gate array-application-specific integrated circuit code acceleration |
US10747565B2 (en) * | 2017-04-18 | 2020-08-18 | Amazon Technologies, Inc. | Virtualization of control and status signals |
US10503551B2 (en) * | 2017-06-07 | 2019-12-10 | Dell Products L.P. | Coordinating FPGA services using cascaded FPGA service managers |
CN108363615B (zh) * | 2017-09-18 | 2019-05-14 | 清华大学 | 用于可重构处理系统的任务分配方法和系统 |
US10303630B2 (en) * | 2017-10-08 | 2019-05-28 | Huawei Technologies Co., Ltd. | Configurable hardware accelerators |
CN109639446B (zh) | 2017-10-09 | 2022-01-11 | 阿里巴巴集团控股有限公司 | Fpga设备、基于fpga设备的云系统 |
US11222256B2 (en) * | 2017-10-17 | 2022-01-11 | Xilinx, Inc. | Neural network processing system having multiple processors and a neural network accelerator |
US12061990B2 (en) * | 2017-10-17 | 2024-08-13 | Xilinx, Inc. | Static block scheduling in massively parallel software defined hardware systems |
US10740125B2 (en) | 2018-01-30 | 2020-08-11 | Hewlett Packard Enterprise Development Lp | Memristive dot product engine virtualization |
US11416395B2 (en) | 2018-02-05 | 2022-08-16 | Micron Technology, Inc. | Memory virtualization for accessing heterogeneous memory components |
US10782908B2 (en) | 2018-02-05 | 2020-09-22 | Micron Technology, Inc. | Predictive data orchestration in multi-tier memory systems |
US11099789B2 (en) | 2018-02-05 | 2021-08-24 | Micron Technology, Inc. | Remote direct memory access in multi-tier memory systems |
US10880401B2 (en) * | 2018-02-12 | 2020-12-29 | Micron Technology, Inc. | Optimization of data access and communication in memory systems |
US10599553B2 (en) | 2018-04-27 | 2020-03-24 | International Business Machines Corporation | Managing cloud-based hardware accelerators |
US10877892B2 (en) | 2018-07-11 | 2020-12-29 | Micron Technology, Inc. | Predictive paging to accelerate memory access |
CN109032010B (zh) * | 2018-07-17 | 2021-04-20 | 创新先进技术有限公司 | Fpga器件及基于其的数据处理方法 |
CN109491776B (zh) * | 2018-11-06 | 2022-05-31 | 北京百度网讯科技有限公司 | 任务编排方法和系统 |
WO2020113015A1 (en) | 2018-11-28 | 2020-06-04 | Marvell World Trade Ltd. | Network switch with endpoint and direct memory access controllers for in-vehicle data transfers |
US10831975B2 (en) | 2018-11-29 | 2020-11-10 | International Business Machines Corporation | Debug boundaries in a hardware accelerator |
US10949211B2 (en) * | 2018-12-20 | 2021-03-16 | Vmware, Inc. | Intelligent scheduling of coprocessor execution |
CN109726169A (zh) * | 2019-01-09 | 2019-05-07 | 扬州万方电子技术有限责任公司 | 一种图形硬件加速结构及其方法 |
US10664282B1 (en) * | 2019-02-04 | 2020-05-26 | Amazon Technologies, Inc. | Runtime augmentation of engine instructions |
US11119928B2 (en) | 2019-02-27 | 2021-09-14 | International Business Machines Corporation | Instant quiescing of an accelerator |
US10673460B1 (en) | 2019-02-27 | 2020-06-02 | International Business Machines Corporation | Spilling temporary results for accommodation of memory boundaries |
US10852949B2 (en) | 2019-04-15 | 2020-12-01 | Micron Technology, Inc. | Predictive data pre-fetching in a data storage device |
CN110083387B (zh) * | 2019-04-19 | 2021-11-12 | 上海兆芯集成电路有限公司 | 使用轮询机制的处理系统及其访存方法 |
US20200341824A1 (en) * | 2019-04-26 | 2020-10-29 | Intel Corporation | Technologies for providing inter-kernel communication abstraction to support scale-up and scale-out |
US10761999B1 (en) * | 2019-05-30 | 2020-09-01 | Western Digital Technologies, Inc. | Storage device with predictor engine of host turnaround time |
CN114787775A (zh) * | 2020-02-03 | 2022-07-22 | 索尼互动娱乐股份有限公司 | 数据处理系统、数据转发装置以及上下文切换方法 |
US20230081394A1 (en) * | 2020-02-28 | 2023-03-16 | Arizona Board Of Regents On Behalf Of Arizona State University | A software-defined board support package (sw-bsp) for stand-alone reconfigurable accelerators |
US20220321403A1 (en) * | 2021-04-02 | 2022-10-06 | Nokia Solutions And Networks Oy | Programmable network segmentation for multi-tenant fpgas in cloud infrastructures |
CN113420517B (zh) * | 2021-05-28 | 2023-01-06 | 清华大学 | 面向云端深度学习推理的fpga虚拟化硬件系统栈设计 |
US20220382478A1 (en) * | 2021-06-01 | 2022-12-01 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for page migration in memory systems |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080052525A1 (en) * | 2006-08-28 | 2008-02-28 | Tableau, Llc | Password recovery |
WO2009039566A1 (en) * | 2007-09-25 | 2009-04-02 | Michael Reznik | Reconfigurable numeric accelerator |
US20100083247A1 (en) * | 2008-09-26 | 2010-04-01 | Netapp, Inc. | System And Method Of Providing Multiple Virtual Machines With Shared Access To Non-Volatile Solid-State Memory Using RDMA |
US20100281231A1 (en) * | 2009-04-29 | 2010-11-04 | Guhan Krishnan | Hierarchical memory arbitration technique for disparate sources |
US7979857B2 (en) * | 2004-05-21 | 2011-07-12 | Computer Associates Think, Inc. | Method and apparatus for dynamic memory resource management |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6792506B2 (en) * | 2002-03-29 | 2004-09-14 | Emc Corporation | Memory architecture for a high throughput storage processor |
US20140053161A1 (en) * | 2012-08-14 | 2014-02-20 | Advanced Micro Devices, Inc. | Method for Adaptive Scheduling of Multimedia Jobs |
US10037228B2 (en) * | 2012-10-25 | 2018-07-31 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
-
2013
- 2013-09-24 WO PCT/CA2013/050725 patent/WO2015042684A1/en active Application Filing
- 2013-09-24 CN CN201380079813.8A patent/CN105579959B/zh not_active Expired - Fee Related
- 2013-09-24 US US15/023,694 patent/US10037222B2/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7979857B2 (en) * | 2004-05-21 | 2011-07-12 | Computer Associates Think, Inc. | Method and apparatus for dynamic memory resource management |
US20080052525A1 (en) * | 2006-08-28 | 2008-02-28 | Tableau, Llc | Password recovery |
WO2009039566A1 (en) * | 2007-09-25 | 2009-04-02 | Michael Reznik | Reconfigurable numeric accelerator |
US20100083247A1 (en) * | 2008-09-26 | 2010-04-01 | Netapp, Inc. | System And Method Of Providing Multiple Virtual Machines With Shared Access To Non-Volatile Solid-State Memory Using RDMA |
US20100281231A1 (en) * | 2009-04-29 | 2010-11-04 | Guhan Krishnan | Hierarchical memory arbitration technique for disparate sources |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106572500B (zh) * | 2016-10-21 | 2020-07-28 | 同济大学 | 一种c-ran中硬件加速器的调度方法 |
CN108062239A (zh) * | 2016-11-09 | 2018-05-22 | 华为技术有限公司 | 一种加速器加载方法、系统和加速器加载装置 |
US11221866B2 (en) | 2016-11-09 | 2022-01-11 | Huawei Technologies Co., Ltd. | Accelerator loading method, system, and apparatus |
US11416267B2 (en) | 2016-11-09 | 2022-08-16 | Huawei Technologies Co., Ltd. | Dynamic hardware accelerator selection and loading based on acceleration requirements |
WO2018137363A1 (zh) * | 2017-01-24 | 2018-08-02 | 华为技术有限公司 | 一种用于调整虚拟机加速能力的加速能力调整方法及装置 |
US11379255B2 (en) | 2017-01-24 | 2022-07-05 | Huawei Technologies Co., Ltd. | Acceleration capacity adjustment method and apparatus for adjusting acceleration capacity of virtual machine |
CN109496415A (zh) * | 2018-03-23 | 2019-03-19 | 华为技术有限公司 | 一种虚拟机访问远端加速设备方法及系统 |
CN109496415B (zh) * | 2018-03-23 | 2021-02-09 | 华为技术有限公司 | 一种虚拟机访问远端加速设备方法及系统 |
CN112041817A (zh) * | 2018-05-08 | 2020-12-04 | 瑞典爱立信有限公司 | 用于管理借助于加速器装置的硬件加速的请求的方法和节点 |
CN111382450A (zh) * | 2018-12-31 | 2020-07-07 | 德克萨斯仪器股份有限公司 | 安全可靠的虚拟化域特定硬件加速器 |
Also Published As
Publication number | Publication date |
---|---|
WO2015042684A1 (en) | 2015-04-02 |
US10037222B2 (en) | 2018-07-31 |
CN105579959B (zh) | 2019-06-07 |
US20160210167A1 (en) | 2016-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105579959A (zh) | 硬件加速器虚拟化 | |
EP3039540B1 (en) | Virtual machine monitor configured to support latency sensitive virtual machines | |
US9501137B2 (en) | Virtual machine switching based on processor power states | |
CN113835895B (zh) | 用于具有不同能力的核心的线程和/或虚拟机调度 | |
US20100115510A1 (en) | Virtual graphics device and methods thereof | |
US9697029B2 (en) | Guest idle based VM request completion processing | |
CN103069390A (zh) | 在混合计算环境中重新调度工作量 | |
JP2013516021A (ja) | プロセッサコアのハイパーバイザ離隔 | |
JP2014219977A (ja) | 動的仮想マシンサイジング | |
Wu et al. | Container lifecycle‐aware scheduling for serverless computing | |
US9367345B1 (en) | Power efficient cross-VCPU notification by VM function | |
US11048635B2 (en) | Controlling a rate of prefetching based on bus bandwidth | |
US8578388B2 (en) | Optimizing the performance of hybrid CPU systems based upon the thread type of applications to be run on the CPUs | |
US9003094B2 (en) | Optimistic interrupt affinity for devices | |
US20130054861A1 (en) | Pessimistic interrupt affinity for devices | |
US20200341789A1 (en) | Containerized workload scheduling | |
US20060005184A1 (en) | Virtualizing management hardware for a virtual machine | |
CN111209080A (zh) | 一种图形处理器透传的方法 | |
US10241838B2 (en) | Domain based resource isolation in multi-core systems | |
US9898348B2 (en) | Resource mapping in multi-threaded central processor units | |
Xiao et al. | Energy-efficiency enhanced virtual machine scheduling policy for mixed workloads in cloud environments | |
US9021509B1 (en) | Datacenter managed thread and multi-processing support | |
US20180081724A1 (en) | Resource sharing management of a field programmable device | |
US9176910B2 (en) | Sending a next request to a resource before a completion interrupt for a previous request | |
Jiang et al. | vChecker: an application-level demand-based co-scheduler for improving the performance of parallel jobs in Xen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190607 Termination date: 20190924 |