CN110383246A - 虚拟机控制可编程硬件的单独子集 - Google Patents
虚拟机控制可编程硬件的单独子集 Download PDFInfo
- Publication number
- CN110383246A CN110383246A CN201780060589.6A CN201780060589A CN110383246A CN 110383246 A CN110383246 A CN 110383246A CN 201780060589 A CN201780060589 A CN 201780060589A CN 110383246 A CN110383246 A CN 110383246A
- Authority
- CN
- China
- Prior art keywords
- programmable
- virtual machine
- subset
- logic
- server computer
- 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
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
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/549—Remote execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Logic Circuits (AREA)
- Stored Programmes (AREA)
Abstract
在多租户环境中,单独的虚拟机可用于配置和操作例如现场可编程门阵列(FPGA)的可编程集成电路的不同子集。可编程集成电路可以在子集内彼此直接通信,但是不能在子集之间通信。通常,可编程IC的所有子集都在多租户环境中的同一主机服务器计算机内,并且被沙盒化或彼此隔离,以便多个客户可以在不了解或干扰其他客户的情况下共享主机服务器计算机的资源。
Description
背景技术
云计算是使用在远程位置可用并且可通过诸如因特网的网络访问的计算资源(硬件和软件)。在一些布置中,用户能够根据需要购买这些计算资源(包括存储和计算能力)作为实用程序。云计算将用户的数据、软件和计算交托给远程服务。虚拟计算资源的使用可以提供许多优点,包括成本优势和/或快速适应变化的计算资源需求的能力。
大型计算机系统的用户可能具有由不同用例导致的各种计算要求。云或计算服务提供者可以提供具有不同类型的组件的各种不同计算机系统,这些组件具有不同级别的性能和/或功能。因此,用户可以选择在执行特定任务时可能潜在地更高效的计算机系统。例如,计算服务提供者可以为系统提供处理性能、内存性能、存储容量或性能以及网络容量或性能的不同组合。通常,多个客户可以共享和利用计算服务提供者提供的通用资源,从而使客户使用计算服务提供者的服务更具成本效益。
附图说明
图1是包括控制可编程集成电路(IC)的子集的虚拟机的系统图。
图2是包括多个虚拟机的示例系统图,所述多个虚拟机控制多个可编程IC,所述可编程IC之间具有通信信道。
图3是包括用于控制不同可配置逻辑平台的多个虚拟机的示例主机服务器计算机。
图4示出了示例可配置硬件平台的进一步细节。
图5是示出在包括具有多个可配置逻辑平台的服务器计算机的多租户环境中运行的多个虚拟机实例的示例系统图。
图6是在多租户环境中操作多个可编程IC的示例方法的流程图。
图7是将虚拟机映射到可编程IC的子集的示例方法的流程图。
图8描绘了可以实现所描述的创新的合适计算环境的一般化示例。
发明详述
在某些方面,在云环境中提供定制硬件违背了跨多个客户共享诸如服务器计算机之类的通用硬件的核心益处之一。然而,诸如现场可编程门阵列(FPGA)之类的可编程逻辑是足够通用的并且可以由客户编程然后由其他客户重用。因此,用于在一组可重复使用的通用计算资源内提供专用计算资源的一种解决方案是提供包括可配置逻辑平台的服务器计算机(诸如通过向服务器计算机提供包括一个或多个FPGA的附加卡)作为一般计算资源的选择。可配置逻辑是可被编程或配置为执行由应用于可配置逻辑或加载到可配置逻辑上的配置数据指定的逻辑功能的硬件。例如,计算资源的用户可以提供用于配置可配置逻辑的规范(诸如以硬件描述语言编写的源代码),可配置逻辑可以根据规范来配置,并且配置的逻辑可以用于为用户执行任务。然而,允许用户访问计算设施的低级硬件可能潜在地在计算设施内引入安全性和隐私问题。作为具体示例,如果配置的逻辑导致计算设施内的一个或多个服务器计算机发生故障(例如,崩溃、挂起或重启)或被拒绝的网络服务,则来自一个用户的错误或恶意设计可能潜在地导致对其他用户拒绝服务。作为另一具体示例,如果配置的逻辑能够读取和/或写入另一用户的存储器空间的存储器,则来自一个用户的错误或恶意设计可能潜在地破坏或读取来自另一用户的数据。
如本文所述,计算服务的设施可包括各种计算资源,其中一种类型的计算资源可包括服务器计算机,该服务器计算机包括可配置逻辑平台。可配置逻辑平台可以由计算机系统的用户编程或配置,使得计算资源的硬件(例如,可配置逻辑)由用户定制。例如,用户可以对可配置逻辑进行编程,使其充当紧密耦合到服务器计算机的硬件加速器。作为具体的示例,硬件加速器可以通过服务器计算机的本地互连(例如外围组件互连快速(PCI-Express或PCIe))访问。用户可以在服务器计算机上执行应用程序,并且应用程序的任务可以由硬件加速器使用PCIe事务来执行。通过将硬件加速器紧密耦合到服务器计算机,可以减少加速器与服务器计算机之间的延迟,这可以潜在地提高应用程序的处理速度。
客户可以在主机服务器计算机上启动多个虚拟机,并且单独的虚拟机可以用于配置和操作可配置逻辑的不同子集。在一些实施例中,可配置逻辑可以包括多个FPGA,使得虚拟机可以同时操作子集内的一个或多个FPGA。操作FPGA包括向FPGA发送数据和从FPGA接收数据。在同一主机服务器计算机上,单独的虚拟机可以同时操作一个或多个FPGA的另一个子集。子集中的FPGA可以编程为彼此通信。但是,出于安全原因,可以限制单独的子集进行交叉通信。因此,在云环境中的主机服务器计算机上的FPGA子集的沙盒化允许多个客户在子集中访问它们各自的可编程逻辑。子集内的FPGA的交叉通信允许虚拟机使用多个FPGA,并且FPGA可以彼此通信而无需通过管理程序进行通信。
计算服务提供者可以通过在可配置逻辑平台的主机逻辑内包装或封装(即,沙盒化)用户的硬件(这里也称为应用程序逻辑)来潜在地增加计算资源的安全性和/或可用性。封装应用程序逻辑可以包括限定或限制应用程序逻辑对配置资源、物理接口、可配置逻辑平台的硬宏以及可配置逻辑平台的各种外围设备的访问。例如,计算服务提供者可以管理可配置逻辑平台的编程,使得它包括主机逻辑和应用程序逻辑。主机逻辑可以为应用程序逻辑在其中工作的提供框架或沙盒。特别地,主机逻辑可以与应用程序逻辑通信并约束应用程序逻辑的功能。例如,主机逻辑可以在本地互连(例如,PCIe互连)与应用程序逻辑之间执行桥接功能,使得应用程序逻辑不能直接控制本地互连上的信令。主机逻辑可以负责在本地互连上形成分组或总线事务,并确保满足协议要求。通过控制本地互连上的事务,主机逻辑可以潜在地防止形态异常的事务或事务到越界位置。作为另一示例,主机逻辑可以隔离配置访问端口,使得应用程序逻辑不会在不使用由计算服务提供者提供的服务的情况下使可配置逻辑平台被重新编程。
图1是示出包括主机服务器计算机102的示例计算系统100的系统图,主机服务器计算机102具有由虚线108示意性地分开的软件部分104和硬件部分106。硬件部分106包括一个或多个CPU、存储器、存储设备等,用110一般地示出为其它硬件。硬件部分106还可以包括可编程集成电路(IC),通常用120表示。可编程IC可以是FPGA或其他类型的可编程逻辑,例如复杂可编程逻辑器件(CPLD)。可编程IC设计为在制造后由客户编程。可编程IC包含一系列可编程硬件逻辑块和可配置互连,可配置互连将硬件逻辑块链接在一起。可以对逻辑块进行编程,以执行从简单门到复杂组合功能的硬件功能。如下面进一步描述的,可以在主机服务器计算机102中使用任何数量的可编程IC 120。此外,可编程IC可以位于服务器内的一个或多个插卡上,也可以位于服务器主板上。
在硬件106上方运行层是管理程序或内核层,在该示例中示出为包括支配管理程序130。管理程序或内核层可以被分类为类型1或类型2管理程序。类型1管理程序直接在主机硬件上运行,以控制硬件并管理访客操作系统。类型2管理程序在传统的操作系统环境中运行。因此,在类型2环境中,管理程序可以是在操作系统上方运行的不同层,并且操作系统与系统硬件交互。不同类型的管理程序包括基于Xen、Hyper-V、ESXi/ESX、Linux等,但也可以使用其他管理程序。支配管理程序130通常可以包括访问硬件106所需的设备驱动程序。
软件层104可以包括用于运行虚拟机的多个分区,通常用140示出。分区是管理程序隔离的逻辑单元并且正在执行虚拟机。每个分区可以分配其自己的硬件层存储器、CPU分配、存储等部分。此外,每个分区可以包括一个虚拟机和它自己的访客操作系统。因此,每个分区是容量的抽象部分,旨在独立于其他分区来支持其自己的虚拟机。每个虚拟机140通过支配管理程序130与硬件层106通信。因此,单个支配管理程序130可以管理多个虚拟机以及虚拟机如何与可编程IC 120交互。可替代地,在将虚拟机映射到可编程IC之后,虚拟机可以直接操作可编程IC。示出了两个不同的虚拟机160、162共享主机服务器计算机102的资源,但是可以使用任何数量的虚拟机。但是,虚拟机彼此隔离,使得一个虚拟机无法访问另一个虚拟机的资源。例如,虚拟机160被示出具有对可编程IC的子集170的操作的控制,而虚拟机162被示出具有对可编程IC的子集172的控制。在一个子集内,可编程IC可以相互通信。但是,出于安全原因,子集之间的通信受到限制。因此,虚拟机可以配置(编程)和操作(控制和接收/发送数据)一个或多个可编程IC的整个子集。然而,子集170、172如180所示被隔离,并且不能在它们之间进行通信。可编程IC的配置可以通过来自虚拟机的直接命令或通过间接命令来完成。另外,可编程IC的不同子集可具有不同数量的可编程IC。例如,子集170具有3个可编程IC,而子集172具有两个可编程IC。子集在基本配置中也可以具有相同数量的可编程IC。
在一个示例中,管理程序可以是基于Xen的管理程序,但是如上所述可以使用其他管理程序。在Xen示例中,支配管理程序130是域0(也称为Dom 0),而虚拟机160、162是域U访客。域0管理程序具有访问物理I/O资源以及与域U访客进行交互的特殊权限。未经域0授权,域U访客无法访问硬件层106。因此,域0是确保可编程IC 170、172的子集分离的管理层。
支配管理程序130负责确保可编程IC 120保持沙盒化。另外,支配管理程序130可以控制接口总线,例如PCIe接口。通过该接口,支配管理程序130具有对可编程IC 120中的硬件的安全性的管理和控制。以这种方式,支配管理程序130可以安全地管理可编程IC配置端口并保护在可编程IC内编程的IP。另外,支配管理程序130可以用作外部管理服务的主接口,用于可编程IC的配置和操作。
图2示出了可用于托管多个虚拟机220到230的主机服务器计算机210,其中虚拟机的数量可以是任何整数N。虚拟机220-230可以联合编程和配置多个可编程IC 240、250。其中可编程IC的数量可以是任意数量M,其中M是整数。因此,虚拟机1到虚拟机N可以使用可编程IC的单独部分来操作可编程IC 240。具体地,可编程IC 240的部分可以由虚拟机220编程,而其他部分可以由虚拟机230编程。然而,这些部分独立地操作。同样,可编程IC 250可由多个虚拟机编程和操作。此外,可编程IC 240-250可以彼此通信,例如通过串行端口。通常,可编程IC之间的交叉通信用于与一个虚拟机相关联的可编程IC的部分,而与不同虚拟机相关联的部分之间的交叉通信被严格控制或不被允许。在一个示例中,可编程IC240-250可用于实现与虚拟机相关联的单独的加速器。
图3是示出包括两个或更多个可配置逻辑平台310、311和服务器计算机320的计算系统300的示例的系统图。可配置逻辑平台是图1和2的可编程IC的示例实施例。计算系统300提供来自图1的主机服务器计算机102的附加细节。服务器计算机320可用于为最终用户执行应用程序。具体地,服务器计算机320可以包括中央处理单元(CPU)322、存储器324和外围接口326。CPU 322可以用于执行存储在存储器324中的指令。例如,可以为存储器324加载应用程序的全部或一部分,并且CPU 322可以执行应用程序的指令。应用程序可以通过使用外围接口326发布事务来与可配置逻辑平台310的硬件加速器或其他硬件逻辑进行通信。服务器计算机320可以用于执行多个虚拟机318、319。可以执行附加虚拟机。
如本文所使用的,事务是组件之间的通信。作为具体示例,事务可以是读取请求、写入、读取响应、消息、中断或组件之间的其他各种信息交换。事务可以在由多个组件共享的总线上发生。具体地,可以调制总线的信号线的值,以使用总线的通信协议在总线上传送信息。事务可以在一个或多个阶段发生,例如地址阶段和一个或多个数据阶段。附加地或替代地,可以使用连接两个组件的点对点互连的一个或多个串行线来发生事务。具体地,可以在通过点对点互连传输的分组中发送事务。
外围接口326可以包括用于使用本地或前侧互连的CPU 322与使用外围或扩展互连的组件之间进行通信的桥接器。具体地,外围接口326可以连接到物理互连,该物理互连用于将服务器计算机320连接到可配置逻辑平台310和/或其他组件。例如,物理互连可以是用于使用共享并行总线或串行点对点链路将多个组件连接在一起的扩展总线。作为具体示例,物理互连可以是PCI express、PCI或将服务器计算机320紧密地耦合到可配置逻辑平台310的另一物理互连。因此,服务器计算机320和可配置逻辑平台310、311可以使用例如PCI总线事务或PCIe分组进行通信。尽管服务器计算机320被示为与可配置逻辑平台310、311不同的单独的盒,但是它们通常在相同的硬件机箱内。最典型地,可配置逻辑平台310、311位于主机服务器计算机中的一个或多个插件卡上。
可配置逻辑平台310可包括主机逻辑308和可重新配置逻辑区域340。主机逻辑308可包括主机接口312、管理功能314和数据路径功能316。主机逻辑308可以是由计算服务提供者提供的可编程逻辑并且通过可配置逻辑平台310提供管理功能。可重新配置逻辑区域340可包括可配置为实现由客户提供的硬件加速器或应用程序逻辑的硬件。换句话说,可重新配置逻辑区域340可包括可编程以执行给定功能的硬件逻辑。例如,可重新配置逻辑区域340可包括可编程硬件逻辑块,其包括组合逻辑和/或查找表(LUT)和顺序逻辑元件(诸如触发器和/或锁存器)、可编程路由和时钟资源、可编程分布式和块式随机存取存储器(RAM)、数字信号处理(DSP)位切片,以及可编程输入/输出引脚。
主机逻辑308可用于封装或沙盒化可重新配置逻辑区域340。例如,可重新配置逻辑区域340可使用预定义接口与可配置硬件平台的各种组件接口,使得可重新配置逻辑区域340受限制在它可以执行的功能中。作为一个示例,可重新配置逻辑区域可以与在配置可重新配置逻辑区域340之前加载的静态主机逻辑接口。例如,静态主机逻辑可以包括将可配置逻辑平台310的不同组件与可重新配置逻辑区域340隔离的逻辑。作为一个示例,可以屏蔽掉可配置逻辑平台310的硬宏(诸如配置访问端口或用于物理互连上的信令的电路),以使可重新配置逻辑区域340不能直接访问硬宏。
主机逻辑308可以包括用于与服务器计算机320通信的主机接口312。具体地,主机接口312可以用于连接到物理互连并且使用物理互连的通信协议与服务器计算机320进行通信。作为一个示例,服务器计算机320可以使用包括与可配置逻辑平台310相关联的地址的事务与可配置逻辑平台310通信。类似地,可配置逻辑平台310可以使用包括与服务器计算机320相关联的地址的事务与服务器计算机320进行通信。与连接到物理互连的各种设备相关联的地址可以由系统架构师预定义并编程到驻留在设备上的软件中。附加地或替代地,通信协议可以包括枚举序列,其中查询连接到物理互连的设备,并且其中地址被分配给每个设备作为枚举序列的一部分。作为一个示例,外围接口326可以向连接到物理互连的每个设备发出查询。主机接口312可以通过提供关于可配置逻辑平台310的信息来响应查询,例如可配置逻辑平台310上存在多少功能,以及与可配置逻辑平台310的每个功能相关联的地址范围的大小。基于该信息,可以分配计算系统300的地址,使得连接到物理互连的每个设备的每个功能被分配非重叠的地址范围。以这种方式,可以建立虚拟机与可配置逻辑平台的关联或映射。在枚举之后,主机接口312可以基于事务的地址将事务路由到可配置逻辑平台310的功能。
主机逻辑可以包括可以用于管理和配置可配置逻辑平台310的管理功能314。可以使用针对管理功能314的地址范围的事务从服务器计算机320向管理功能314发送命令和数据。例如,服务器计算机320可以生成事务以传输可配置逻辑平台310的被映射到管理功能314的该地址范围内的一个或多个地址的数据(例如,配置数据)和/或写控制寄存器。写入控制寄存器可以使可配置逻辑平台310执行操作,例如配置和管理可配置逻辑平台310。作为具体示例,对应于将在可重新配置逻辑区域340中实现的应用程序逻辑的配置数据可以通过物理互连在一个或多个事务中从服务器计算机320发送到可配置逻辑平台310。用配置数据配置可重新配置逻辑区域340的事务可以从服务器计算机320发送到可配置逻辑平台310。具体地,事务可以将值写入映射到管理功能314地址空间的控制寄存器以开始配置可重新配置逻辑区域340。单独的事务350可以来自每个虚拟机318、319,以便对可重新配置逻辑区域340进行编程。在一个实施例中,配置数据可以在可重新配置逻辑区域340的配置开始之前从服务器计算机320传送到可配置逻辑平台310。例如,管理功能314可以使配置数据存储在可配置逻辑平台310可访问的片上或片外存储器中,并且当可重新配置逻辑区域340被配置时,可以从存储器读取配置数据。在另一个实施例中,在可重新配置逻辑区域340的配置开始之后,可以将配置数据从服务器计算机320传送到可配置逻辑平台310。例如,可以编写控制寄存器以开始可重新配置逻辑区域340的配置,并且配置数据可以流送到或加载到可重新配置逻辑区域340上,因为包括配置数据的事务由管理功能314处理。
主机逻辑可以包括数据路径功能316,其可以用于在服务器计算机320与可配置逻辑平台310之间交换信息(例如,应用输入/输出160)。具体地,命令和数据可以使用以数据路径功能316的地址范围为目标的事务从服务器计算机320发送到数据路径功能316。类似地,可配置逻辑平台310可以使用包括与服务器计算机320相关联的地址的事务与服务器计算机320通信。数据路径功能316可以充当主机接口312与可重新配置逻辑区域340之间的转换层。具体地,数据路径功能316可以包括用于从可重新配置逻辑区域340接收信息的接口,并且数据路径功能316可以格式化信息以便从主机接口312发送。格式化信息可以包括生成针对一个或多个事务的控制信息,并将数据分区为大小符合协议规范的块。因此,数据路径功能316可以插入在可重新配置逻辑区域340与物理互连之间。以这种方式,可以可靠地阻止可重新配置逻辑区域340格式化事务并直接控制用于驱动物理互连的信号,使得可重新配置逻辑区域340不能用于无意或恶意地违反物理互连的协议。
可配置逻辑平台311可以具有与可配置逻辑平台310类似的结构,并且出于简洁的目的而未对其进行描述。然而,应该注意,可重新配置逻辑平台还可以包括主机逻辑区域和可重新配置逻辑区域,在其中可以编程客户硬件逻辑。虚拟机318、319都可以操作和控制它们各自的可配置逻辑平台310、311。例如,虚拟机318可以配置和操作可配置逻辑平台310,而虚拟机319可以配置和操作可配置逻辑平台311。可配置逻辑平台310可以是FPGA,并且可以将附加FPGA添加到子集,使得虚拟机318在子集中配置和操作多个FPGA。虚拟机319可以类似地配置和操作子集中的可配置逻辑平台311和其他FPGA。子集可以具有不同数量的FPGA,并且在子集内,FPGA可以通过串行接口或其他通信手段彼此交叉通信。但是,通常禁止子集之间的通信。
在备选实施例中,多个子集可以由相同的虚拟机(例如虚拟机318)控制。在这种情况下,子集之间的交叉通信可以通过虚拟机318发生。例如,可配置逻辑平台310上的可重新配置逻辑区域340可以与虚拟机318通信,虚拟机318然后可以将通信发送到可配置逻辑平台311上的其他可重新配置逻辑区域。在该示例中,虚拟机319不受配置逻辑平台310、311中的任一个控制,也不能访问可配置逻辑平台310、311中的任一个。
图4是示出包括可配置硬件平台410的系统400的示例的系统图。服务器计算机(未示出)可以经由物理互连430耦合到可配置硬件平台410。例如,物理互连430可以是PCIexpress、PCI或将服务器计算机紧密耦合到可配置硬件平台410的任何其他互连。可配置硬件平台410可包括可重新配置逻辑块和其他硬件。可配置逻辑块可被配置或编程为执行可配置硬件平台410的各种硬件功能。可重新配置逻辑块可以用不同配置多次编程,使得块可以在设备的寿命期间执行不同功能。可配置硬件平台410的功能可以基于每个功能的目的或能力来进行分类,或者基于何时将功能加载到可配置硬件平台410中来进行分类。例如,可配置硬件平台410可以包括静态硬件逻辑、可重新配置硬件逻辑和硬宏。可以在不同时间配置静态逻辑、可重新配置逻辑和硬宏的功能。因此,可以递增地加载可配置硬件平台410的功能。
硬宏可以执行预定义功能,并且在可配置硬件平台410通电时可以使用。例如,硬宏可以包括执行特定功能的硬连线电路。作为具体示例,硬宏可以包括用于配置可配置硬件平台410的配置访问端口(CAP)411,用于传送串行数据的串行器-解串器收发器(SERDES)412,用于发信号和控制片外存储器的存储器或动态随机存取存储器(DRAM)控制器413(例如双倍数据速率(DDR)DRAM 481),以及用于发信号和控制存储设备482的存储控制器414。虽然示出了SERDES收发器,但是其他类型的通信端口可以用作共享外围接口。其他类型包括但不限于以太网、环形拓扑或其他类型的网络接口。另外,SERDES接口是高速多通道串行接口,并且可以使用具有多通道通信路径的其他串行端口。共享外围接口可用于可编程IC之间的交叉通信,例如图1所示的子集170中的可编程IC之间的通信。在具体示例中,SerDes接口可以用于IC之间的交叉通信。
可以在引导时将静态逻辑加载到可重新配置逻辑块上。例如,指定静态逻辑的功能的配置数据可以在启动序列期间从片上或片外闪存设备加载。启动序列可以包括检测电源事件(例如通过检测电源电压已经从低于阈值转变到高于阈值)并且响应于电源事件而取消置位复位信号。可以响应于电源事件或取消置位复位来触发初始化序列。初始化序列可以包括读取存储在闪存设备上的配置数据,并使用配置访问端口411将配置数据加载到可配置硬件平台410上,使得可重新配置逻辑块的至少一部分被编程为具有静态逻辑的功能。在加载静态逻辑之后,可配置硬件平台410可以从加载状态转换到包括静态逻辑的功能的操作状态。
可配置逻辑可被加载到可重新配置逻辑块上,同时可配置硬件平台410可操作(例如,在已加载静态逻辑之后)。对应于可重新配置逻辑的配置数据可以存储在片上或片外存储器中和/或配置数据可以从可配置硬件平台410的接口(例如,互连接口456)接收或流式传输。可重新配置逻辑可以划分为非重叠区域,其可以与静态逻辑接口。例如,可重新配置区域可以布置成阵列或其他规则或半规则结构。例如,阵列结构可以包括孔或块,其中硬宏放置在阵列结构内。通过使用可以指定为静态逻辑的信号线,不同的可重新配置区域可以彼此通信,并且与静态逻辑和硬宏通信。可以在不同的时间点配置不同的可重新配置区域,使得可以在第一时间点配置第一可重新配置区域,并且可以在第二时间点配置第二可重新配置区域。
可配置硬件平台410的功能可以基于功能的目的或能力来划分或分类。例如,功能可以分类为控制平面功能、数据平面功能和共享功能。控制平面可以用于可配置硬件平台410的管理和配置。数据平面可以用于管理加载到可配置硬件平台410上的加速器逻辑与服务器计算机之间的数据传输。控制平面和数据平面都可以使用共享功能。在加载数据平面功能之前,可以将控制平面功能加载到可配置硬件平台410上。数据平面可以包括配置有应用程序逻辑440的封装的可重新配置逻辑。控制平面可以包括可配置硬件平台410的主机逻辑。
通常,可以使用可配置硬件平台410的不同功能来访问数据平面和控制平面,其中不同功能被分配给不同的地址范围。具体地,可以使用管理功能452来访问控制平面功能,并且可以使用数据路径功能或数据路径功能454来访问数据平面功能。地址映射层450可以区分绑定用于控制平面或数据平面的事务。特别地,可以使用事务内的地址来识别绑定用于可配置硬件平台410的来自服务器计算机的事务。具体地,如果事务的地址落在分配给可配置硬件平台410的地址范围内,则事务发往可配置硬件平台410。事务可以通过物理互连430发送并在互连接口456处接收。互连接口456可以是物理互连430的端点。应当理解,物理互连430可以包括布置在结构中的附加设备(例如,交换机和桥接器),用于将设备或组件连接到服务器计算机。
地址映射层450可以分析事务的地址并基于地址确定在可配置硬件平台410内路由事务的位置。例如,可以为管理功能452分配第一地址范围,并且可以通过使用该范围内的不同地址来访问管理平面的不同功能。具有落在分配给管理功能452的范围内的地址的事务可以通过主机逻辑专用结构460路由到控制平面的不同块。例如,可以将事务寻址到管理和配置块462。类似地,可以为数据路径功能454分配第二地址范围,并且可以通过使用该范围内的不同地址来访问数据平面的不同功能。使用不同的地址映射,可以在区域与虚拟机和/或管理程序之间建立关联。
管理和配置块462可以包括与管理和配置可配置硬件平台410有关的功能。例如,管理和配置块462可以提供对配置访问端口411的访问,以便可以配置可重新配置逻辑块。例如,服务器计算机可以向管理和配置块462发送事务以发起在封装的可重新配置逻辑440内的应用程序逻辑的加载。对应于应用程序逻辑的配置数据可以从服务器计算机发送到管理功能452。管理功能452可以将对应于应用程序逻辑的配置数据通过主机逻辑结构460路由到配置访问端口411,以便可以加载应用程序逻辑。共享外围设备485可用于可编程IC的子集内的相互间通信。例如,Serdes接口412可用于允许可编程IC彼此通信,而无需通过服务器计算机上的管理程序的通信。
可编程IC的子集之间的隔离(诸如在图1中的180处示出)可以使用多种技术发生,例如物理或逻辑隔离。首先,SERDES接口412可以由共享外围接口485内的主机逻辑编程,以启用或禁用可编程IC之间的物理链路(即,通信路径)。启用链路可以在可编程IC之间建立物理通信路径,而禁用链路可以破坏这种物理通信路径。在一个简单的示例中,可以在主机服务器计算机内的PCIe卡之间提供通信路径(例如,环形拓扑或其他类型的通信路径),并且可以在适当时禁用该通信路径以隔离可编程IC的子集。SERDES接口412的禁用或启用可以通过管理功能452或主机逻辑专用结构460发生,管理功能452或主机逻辑专用结构460可以编程(置位或清除)比特以耦合通信路径或断开通信路径。第二种技术可以是在专用外围接口475中包括SERDES接口415(以虚线示出以指示替代或补充实施例)。专用外围接口475可以包括主机逻辑,该主机逻辑基于去往/来自应用程序逻辑440的分组地址来决定是否接收/转发分组。以这种方式,专用外围接口475可以在逻辑上隔离可编程IC的子集。例如,如果应用程序逻辑440尝试将分组发送到由另一虚拟机控制的子集,则专用外围接口475可以丢弃分组或以其他方式拒绝传输。因此,位于可编程IC上的主机控制接口可以基于访问权限来监视分组并控制分组的传输,以建立逻辑连接或逻辑隔离。另外,如果专用外围接口475内的主机逻辑识别出有效的源地址,则接收的分组仅被SERDES接口接受。
管理和配置块462可以存储关于可配置硬件平台410的元数据。例如,不同逻辑块的版本、更新历史和其他信息可以存储在管理和配置块462的存储器中。服务器计算机可以读取存储器以检索部分或全部元数据。具体地,服务器计算机可以发送针对管理和配置块462的存储器的读取请求,并且管理和配置块462可以生成读取响应数据以返回到服务器计算机。
管理功能452还可以用于访问可配置硬件平台410的专用外围设备。专用外围设备是仅可从控制平面访问的组件。例如,专用外围设备可以包括JTAG(例如,IEEE 1149.1)控制器470、发光显示器(LED)471、微控制器472、通用异步接收器/发送器(UART)473、存储器474(例如,串行外围接口(SPI)闪存),以及可从控制平面而非数据平面访问的任何其他组件。管理功能452可以通过主机逻辑专用结构460和专用外围接口475路由命令来访问专用外围设备。专用外围接口475可以直接与专用外围设备通信。
共享外围设备是可从控制平面或数据平面访问的共享功能。例如,可以通过寻址分配给管理功能452的地址范围内的事务来从控制平面访问共享外围设备。可以通过寻址分配给数据路径功能454的地址范围内的事务来从数据平面访问共享外围设备。因此,共享外围设备是可以具有多个地址映射并且可以由控制平面和数据平面使用的组件。共享外围设备的示例是其他可配置硬件平台(CHP)480、DRAM 481(例如,DDR DRAM)、存储设备482(例如,硬盘驱动器和固态驱动器),以及可用于生成,存储或处理信息的其他各种组件。共享外围设备可以通过共享外围接口485访问。因此,共享外围接口485可以是在共享外围设备与可配置硬件平台410的其他功能之间转换的中间层。具体地,共享外围接口485可以转换来自控制平面或数据平面的请求,并将与共享外围设备的通信格式化为共享外围设备的本机协议。
邮箱490和看门狗定时器492是可从控制平面或数据平面访问的共享功能。具体地,邮箱490可用于在控制平面与数据平面之间传递消息和其他信息。例如,邮箱490可以包括缓冲器、控制寄存器(例如信号量)和状态寄存器。通过使用邮箱490作为控制平面与数据平面之间的中介,可以潜在地增加数据平面和控制平面之间的隔离,这可以增加可配置硬件平台410的安全性。
看门狗定时器492可用于检测硬件和/或软件故障并从硬件和/或软件故障中恢复。例如,看门狗定时器492可以监视执行特定任务所花费的时间量,并且如果时间量超过阈值,则看门狗定时器492可以发起事件,例如将值写入控制寄存器或致使中断或复位被置位。作为一个示例,可以在开始第一任务时用第一值初始化看门狗定时器492。看门狗定时器492可以在初始化之后自动倒计数,并且如果看门狗定时器492达到零值,则可以生成事件。可替代地,如果第一任务在看门狗定时器492达到零值之前结束,则在开始第二任务时可以用第二值重新初始化看门狗定时器492。可以基于分别在第一和第二任务中完成的工作复杂性或工作量来选择第一值和第二值。
数据路径功能454可用于访问数据平面功能,例如应用程序逻辑440。例如,指向应用程序逻辑440的事务可导致数据被加载,处理和/或返回到服务器计算机。具体地,可以使用具有在分配给数据路径功能454的范围内的地址的事务来访问数据平面功能。例如,可以经由数据路径功能454从服务器计算机向应用程序逻辑440发送事务。具体地,可以将寻址到数据路径功能454的事务通过外围结构464路由到应用程序逻辑440。来自应用程序逻辑440的响应可以通过外围结构464路由到数据路径功能454,然后返回到服务器计算机。另外,可以使用使用和事务监视层466来监视由应用程序逻辑440生成的数据和事务。监视层466可以潜在地识别违反预定义规则的事务或数据,并且可以生成要通过控制平面发送的警报。附加地或替代地,监视层466可以终止由应用程序逻辑440生成的违反监视层466的任何标准的任何事务。另外,监视层466可以分析移动到应用程序逻辑440或从应用程序逻辑440移出的信息,以便可以从控制平面收集和访问关于信息的统计数据。
还可以通过编程直接存储器访问(DMA)引擎442在服务器计算机与应用程序逻辑之间传送数据。DMA引擎442可以包括用于编程或指定从源位置到目的地位置的DMA传输的控制和状态寄存器。作为一个示例,DMA引擎442可以被编程为将存储在服务器计算机的存储器424内的信息提取到应用程序逻辑440或可配置硬件平台410的共享外围设备中。作为另一个例子,DMA引擎442可以被编程将由应用程序逻辑440生成的数据推送到服务器计算机的存储器424。由应用程序逻辑440生成的数据可以从应用程序逻辑440流式传输,或者可以写入共享外围设备,例如存储器481或存储设备482。
应用程序逻辑440可以与其他可配置硬件平台480通信。例如,其他可配置硬件平台480可以通过与SERDES 412通信的一个或多个串行线连接。应用程序逻辑440可以生成到不同的可配置硬件平台480的事务。可以通过CHP结构444将事务路由到可配置硬件平台480的相应串行线路(通过SERDES 412)。类似地,应用程序逻辑440可以使用反向路径从其他可配置硬件平台480接收信息。
总之,可配置硬件平台410的功能可以分类为控制平面功能和数据路径功能。控制平面功能可用于监视和限制数据平面的能力。数据平面功能可用于加速在服务器计算机上运行的用户应用程序。通过分离控制平面和数据平面的功能,可以潜在地增加服务器计算机和其他计算基础设施的安全性和可用性。例如,应用程序逻辑440不能直接向物理互连430发信号,因为控制平面的中间层控制物理互连430的事务的格式化和信令。作为另一个示例,可以防止应用程序逻辑440使用可以用于重新配置可配置硬件平台410和/或访问可以被给予特权的管理信息的专用外围设备。作为另一示例,应用程序逻辑440可以通过中间层访问可配置硬件平台410的硬宏,使得使用中间层来控制应用程序逻辑440和硬宏之间的任何交互。
图5是基于网络的计算服务提供者500的计算系统图,其示出了可以使用本文描述的实施例的一个环境。作为背景,计算服务提供者500(即,云提供者)能够将计算和存储容量作为服务递送到最终接收者社区。在示例实施例中,可以由组织或代表组织为组织建立计算服务提供者。也就是说,计算服务提供者500可以提供“私有云环境”。在另一实施例中,计算服务提供者500支持多租户环境,其中多个客户独立地操作(即,公共云环境)。一般而言,计算服务提供者500可以提供以下模型:基础设施即服务(“IaaS”),平台即服务(“PaaS”)和/或软件即服务(“SaaS”)。可以提供其他模型。对于IaaS模型,计算服务提供者500可以将计算机提供为物理或虚拟机和其他资源。虚拟机可以由管理程序作为访客运行,如下面进一步描述的。PaaS模型提供了一个计算平台,可以包括操作系统、编程语言执行环境、数据库和web服务器。应用程序开发者可以在计算服务提供者平台上开发和运行他们的软件解决方案,而无需购买和管理底层硬件和软件。此外,应用程序开发者可以在计算服务提供者平台的可配置硬件上开发和运行其硬件解决方案。SaaS模型允许在计算服务提供者中安装和操作应用软件。在一些实施例中,最终用户使用运行web浏览器或其他轻量级客户端应用程序的联网的客户端设备访问计算服务提供者500,例如台式计算机、膝上型计算机、平板电脑、智能手机等。本领域技术人员将认识到,计算服务提供者400可以被描述为“云”环境。
具体示出的计算服务提供者500包括多个服务器计算机502A-502C。虽然只显示了三台服务器计算机,但可以使用任何数量,大型中心可以包含数千台服务器计算机。服务器计算机502A-502C可以提供用于执行软件实例506A-506C的计算资源。在一个实施例中,软件实例506A-506C是虚拟机。如本领域中已知的,虚拟机是执行诸如物理机器之类的应用程序的机器(即计算机)的软件实现的实例。在虚拟机的示例中,服务器502A-502C中的每一个可以被配置为执行管理程序508或被配置为使得能够在单个服务器上执行多个软件实例506的另一类型的程序。另外,每个软件实例506可以被配置为执行一个或多个应用程序。
应当理解,尽管本文公开的实施例主要在虚拟机的上下文中描述,但是其他类型的实例可以与本文公开的概念和技术一起使用。例如,这里公开的技术可以与存储资源、数据通信资源以及其他类型的计算资源一起使用。这里公开的实施例还可以在不利用虚拟机实例的情况下直接在计算机系统上执行应用程序的全部或部分。
服务器计算机502A-502C可以包括不同硬件资源或实例类型的异构集合。一些硬件实例类型可以包括可配置硬件,其至少部分地可由计算服务提供者500的用户配置。实例类型的一个示例可以包括与可配置硬件504A通信的服务器计算机502A。具体地,服务器计算机502A和可配置硬件504A可以通过诸如PCIe的本地互连进行通信。实例类型的另一示例可包括服务器计算机502B和可配置硬件504B。例如,可配置逻辑504B可以集成在多芯片模块内或与服务器计算机502B的CPU集成在同一管芯上。因此,具有和不具有可配置逻辑的硬件实例类型可以存在于计算服务提供者500的资源内。可配置硬件504可以从多个实例506配置和操作,然后多个实例506可以同时控制可配置硬件的操作。如图所示,服务器计算机502可以具有一对一配置,其中每个实例506控制一个或多个可配置硬件504。
可以保留一个或多个服务器计算机520用于执行用于管理服务器计算机502和软件实例506的操作的软件组件。例如,服务器计算机520可以执行管理组件522。客户可以访问管理组件522以配置由客户购买的软件实例506的操作的各个方面。例如,客户可以购买,出租或租赁实例,并对软件实例的配置进行更改。每个软件实例的配置信息可以作为机器映像(MI)542存储在网络附连存储设备540上。具体地,MI 542描述用于启动虚拟机(VM)实例的信息。MI可以包括用于实例的根卷的模板(例如,OS和应用程序),用于控制哪些客户帐户可以使用MI的启动许可,以及指定在实例启动时附加到实例的卷的块设备映射。MI还可以包括对在实例启动时加载在可配置硬件504上的可配置硬件映像(CHI)544的引用。CHI包括用于编程或配置可配置硬件504的至少一部分的配置数据。
客户还可以指定关于如何响应于需求来缩放所购买的实例的设置。管理组件还可以包括用于实现客户策略的策略文档。自动缩放组件524可以基于客户定义的规则来缩放实例506。在一个实施例中,自动缩放组件524允许客户指定用于确定何时应实例化新实例的放大规则和用于确定何时应终止现有实例的缩小规则。自动缩放组件524可以包括在不同服务器计算机502或其他计算设备上执行的多个子组件。自动缩放组件524可以监视内部管理网络上的可用计算资源,并根据需要修改可用资源。
部署组件526可用于帮助客户部署计算资源的新实例506。部署组件可以访问与实例相关联的帐户信息,例如谁是帐户的所有者、信用卡信息、所有者的国家等。部署组件526可以从客户接收包括描述应如何配置新实例506的数据的配置。例如,配置可以指定要在新实例506中安装的一个或多个应用程序,提供要执行以配置新实例506的脚本和/或其他类型的代码,提供指定应如何准备应用程序高速缓存的高速缓存逻辑,以及其他类型的信息。部署组件526可以利用客户提供的配置和高速缓存逻辑来配置,填充和启动新实例506。配置、高速缓存逻辑和其他信息可以由客户使用管理组件522或通过直接提供该信息给部署组件526来指定。实例管理器可以被认为是部署组件的一部分。
客户帐户信息528可以包括与多租户环境的客户相关联的任何期望信息。例如,客户帐户信息可以包括客户的唯一标识符、客户地址、帐单信息、许可信息、用于启动实例的定制参数、调度信息、自动缩放参数、用于访问帐户的先前IP地址、可供客户访问的MI和CHI的列表等。
可以保留一个或多个服务器计算机530用于执行用于管理配置数据到服务器计算机502的可配置硬件504的下载的软件组件。例如,服务器计算机530可以执行包括摄取组件532、库管理组件534和下载组件536的逻辑储存库服务。摄取组件532可以接收主机逻辑和应用程序逻辑设计或规范,并生成可用于配置可配置硬件504的配置数据。库管理组件534可以是用于管理与逻辑储存库服务关联的源代码、用户信息和配置数据。例如,库管理组件534可用于将从用户的设计生成的配置数据存储在用户在网络附连存储设备540上指定的位置。特别地,配置数据可以存储在网络附连存储设备540上的可配置硬件映像542中。另外,库管理组件534可以管理输入文件的版本化和存储(诸如应用程序逻辑和主机逻辑的规范)以及关于逻辑设计和/或逻辑储存库服务的用户的元数据。例如,库管理组件534可以通过诸如用户标识符、实例类型、市场标识符、机器映像标识符和可配置硬件标识符之类的一个或多个属性来索引所生成的配置数据。下载组件536可用于认证对配置数据的请求,并在请求被认证时将配置数据发送到请求者。例如,当启动使用可配置硬件504的实例506时,服务器计算机502A-B上的代理可以向下载组件536发送请求。作为另一个示例,当实例506在可配置硬件504运行时请求可配置硬件504被部分重新配置时,服务器计算机502A-B上的代理可以向该下载组件536发送请求。
网络附连存储设备(NAS)540可用于提供存储空间和对存储在NAS540上的文件的访问。例如,NAS 540可包括用于使用网络文件共享协议,例如网络文件系统(NFS)处理请求的一个或多个服务器计算机。NAS 540可以包括可移动或不可移动介质,包括磁盘、存储区域网络(SAN)、独立磁盘冗余阵列(RAID)、磁带或盒式磁带、CD-ROM、DVD或可以用于以非暂时方式存储信息并且可以通过网络550访问的任何其他介质。
网络550可用于互连服务器计算机502A-502C、服务器计算机520和530以及存储设备540。网络550可以是局域网(LAN)并且可以连接到广域网(WAN)560,使得最终用户可以访问计算服务提供者500。应当理解,已经简化了图5中所示的网络拓扑结构可以包括网络拓扑,并且可以利用更多的网络和联网设备来互连这里公开的各种计算系统。
图6是用于在多租户环境中控制可编程硬件的方法的流程图。在处理框610中,在主机服务器计算机上执行第一虚拟机。虚拟机可以是主机服务器计算机上的本地虚拟机。在其他实施例中,虚拟机可以位于单独的主机服务器计算机上。在特定示例中,单独的主机服务器计算机上的虚拟机可以通过网络与可编程电路所在的主机服务器计算机上的支配管理程序通信。在处理框620中,在同一主机服务器计算机上执行第二虚拟机。与处理框610类似,可以远程执行第二虚拟机。通常可以通过响应于来自与虚拟机相关联的客户的API在主机服务器计算机上启动虚拟机来完成第一虚拟机和第二虚拟机的执行。图2提供了在同一主机服务器计算机210上执行的两个虚拟机220、230的示例。当虚拟机正在执行时,它们响应于请求并且可以发出命令。
在处理框630中,可编程硬件可以加载到一个或多个可编程IC的第一子集中。使用虚拟机,对可编程硬件编程所需的信息可下载到可编程IC。简要地转向图1,可以在子集170内编程不同的可编程IC。可编程IC的编程可以包括将可编程硬件加载到可编程IC中以便影响功能和/或性能。可编程IC的加载可导致可编程硬件的第一部分由一个虚拟机加载,可编程硬件的第二部分由另一个虚拟机加载,其中第一部分和第二部分在同一IC内,例如单个FPGA。在这种情况下,每个部分都沙盒化,因此它不会干扰其他部分。可编程硬件可以包括逻辑(与门、或门等),以及触发器、存储器和任何其他所需的硬件组件。可编程硬件的加载可以由虚拟机实例执行。可替代地,加载也可以由管理程序执行。在又一示例中,编程可以通过外部过程(例如,在单独的主机服务器计算机上的过程)来完成,该外部过程通过本地管理程序的控制来将可编程硬件加载到可编程IC中。
在处理框640中,可编程硬件可以加载到一个或多个可编程IC的第二子集中。可编程硬件的加载类似于处理框630。
在处理框650中,第一子集中的一个或多个可编程IC与第一虚拟机相关联,并且第二子集中的一个或多个可编程IC与第二虚拟机相关联。将虚拟机与可编程IC相关联意味着在虚拟机与可编程IC之间存在映射,使得来自可编程IC的通信(数据、指令等)可以路由到虚拟机,反之亦然。
图7是根据另一实施例的方法的流程图。在处理框710中,提供了多个可编程IC子集。可编程IC的子集包括一个或多个可编程IC,这些可编程IC链接在一起以便直接通信而无需通过管理程序。这种直接通信的一个示例是串行端口,其中至少两个可编程IC通过相互串行总线直接连接。可以封装子集,使得除了通过支配管理程序之外,一个子集不能与另一个子集直接通信。通常,子集由不同的客户控制,并且子集与一个客户相关联,而客户不知道在同一主机服务器计算机上运行的其他子集或客户。在处理框720中,启动第一组和第二组多个虚拟机。第一组可以与第一客户相关联,第二组可以与第二不同客户相关联。每个组可以有一个或多个关联的虚拟机。虚拟机的启动意味着虚拟机可操作并且可以接收请求(例如,API请求)并执行命令。
在处理框730中,第一组虚拟机被映射到可编程IC的子集之一。例如,在图1中,来自组160中的虚拟机的请求被发送到可编程IC 170的子集并使用可编程IC的物理地址发送到期望的特定可编程IC。以这种方式,来自虚拟机实例的请求可以被适当地路由到子集170中的正确的可编程IC。
在处理框740中,将第二组虚拟机映射到可编程IC的子集之一。例如,在图1中,可以将组162的虚拟机映射到可编程IC的第二子集172。使用地址映射,例如在图4中的450处描述的,来自虚拟机162的请求可以被路由到子集172中的适当的可编程IC。两个子集170、172彼此隔离,并且与子集相关联的客户通常不知道在同一主机服务器计算机上运行另一个客户的存在。将虚拟机映射到可编程IC的子集允许支配管理程序封装或沙盒化可编程IC的子集,使得不同的子集可以在同一服务器计算机上操作而不知道其他子集正在共享资源。
图8描绘了其中可以实现所描述的创新的合适计算环境800的一般化示例。计算环境800不旨在对使用范围或功能提出任何限制,因为创新可以在不同的通用或专用计算系统中实现。例如,计算环境800可以是各种计算设备中的任何一种(例如,台式计算机、膝上型计算机、服务器计算机、平板计算机等)。
参考图8,计算环境800包括一个或多个处理单元810、815和存储器820、825。在图8中,该基本配置830包括在虚线内。处理单元810、815执行计算机可执行指令。处理单元可以是通用中央处理单元(CPU)、专用集成电路(ASIC)中的处理器或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力。例如,图8示出了中央处理单元810以及图形处理单元或协处理单元815。有形存储器820、825可以是可由处理单元访问的易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)或两者的某种组合。存储器820、825以适于由处理单元执行的计算机可执行指令的形式存储实现本文描述的一个或多个创新的软件880。
计算系统可具有附加特征。例如,计算环境800包括存储设备840,一个或多个输入设备850、一个或多个输出设备860以及一个或多个通信连接870。互连机制(未示出),例如总线、控制器或网络互连计算环境800的组件。通常,操作系统软件(未示出)为在计算环境800中执行的其他软件提供操作环境,并协调计算环境800的组件的活动。
有形存储设备840可以是可移动的或不可移动的,并且包括磁盘、磁带或盒式磁带、CD-ROM、DVD或可用于以非暂时性方式存储信息并且可以在计算环境800内访问的任何其他介质。存储设备840存储用于实现本文描述的一个或多个创新的软件880的指令。
输入设备850可以是触摸输入设备,诸如键盘、鼠标、笔或轨迹球,语音输入设备,扫描设备,或向计算环境800提供输入的另一设备。输出设备860可以是显示器、打印机、扬声器、CD写入器或提供来自计算环境800的输出的另一设备。
通信连接870使得能够通过通信介质与另一计算实体进行通信。通信介质在已调制数据信号中传送诸如计算机可执行指令、音频或视频输入或输出之类的信息或其他数据。已调制数据信号是以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质可以使用电、光、RF或其他载体。可编程逻辑板872可包括如本文所述的可编程IC。例如,可编程逻辑板872可以包括一个或多个可编程FPGA。板872可以插入总线,例如PCIe总线,以与主服务器处理器和主机服务器计算机中的其他板通信。
可以根据以下条款描述本公开的实施例:
1.一种方法,包括:
在主机服务器计算机上启动第一虚拟机和第二虚拟机,其中主机服务器计算机包括多个可编程集成电路(IC)子集;
将第一虚拟机映射到多个可编程IC子集中的一个;
将第二虚拟机映射到多个可编程IC子集中的另一个;
其中,处于相同子集中的可编程IC耦合在一起以在它们之间进行通信。
2.如条款1所述的方法,其中所述多个可编程逻辑IC子集包括第一子集和第二子集,其中所述第一子集具有与所述第二子集不同数量的可编程IC。
3.根据前述任一条款所述的方法,还包括提供在主机服务器计算机上执行的支配管理程序,其管理由虚拟机访问主机服务器计算机上的硬件。
4.根据前述任一条款所述的方法,其中在可编程逻辑IC的子集之间阻止通信。
5.如条款4所述的方法,其中通过使用共享外围接口禁用所述子集之间的通信路径来实现阻止子集之间的通信。
6.如条款4或5所述的方法,其中通过位于可编程IC上的主机控制接口来完成对通信的阻止,所述可编程IC基于访问权限来路由分组并控制分组的传输。
7.根据前述任一条款所述的方法,还包括使用相应的映射虚拟机配置可编程逻辑IC的每个子集。
8.一种控制多租户环境中的可编程硬件的方法,包括:
在主机服务器计算机上执行第一虚拟机;
在所述主机服务器计算机上执行第二虚拟机;
将可编程硬件加载到一个或多个可编程集成电路的第一子集中;
将可编程硬件加载到一个或多个可编程集成电路的第二子集中;以及将所述第一子集中的一个或多个可编程集成电路与所述第一虚拟机相关联,并将所述第二子集中的一个或多个可编程集成电路与所述第二虚拟机相关联。
9.如条款8所述的方法,其中所述主机服务器计算机上的支配管理程序启动所述第一虚拟机和所述第二虚拟机。
10.如条款8或9所述的方法,其中所述可编程硬件的加载包括在所述第一虚拟机的指导下配置所述可编程硬件的第一部分,以及在所述第二虚拟机的指导下配置所述可编程硬件的第二部分。
11.如条款8-10中任一项所述的方法,其中所述可编程硬件的加载由主机服务器计算机上的支配管理程序或通过所述支配管理程序的控制由所述主机服务器计算机外部的过程来执行。
12.如条款8-11中任一项所述的方法,其中所述第一子集包括至少第一可编程集成电路和第二可编程集成电路,并且其中,所述第一可编程集成电路通过通信信道直接与所述第二可编程集成电路通信。
13.如条款12所述的方法,其中所述通信信道是包括一个或多个串行通信通道的串行端口。
14.如条款12或13所述的方法,其中所述第二子集包括与所述第一子集不同数量的可编程集成电路。
15.如条款8-14中任一项所述的方法,其中一个或多个可编程集成电路的第一子集在物理上或逻辑上与一个或多个可编程集成电路的第二子集隔离。
16.如条款15所述的方法,其中所述一个或多个可编程IC的第一子集不能检测所述多租户环境中的所述第二组一个或多个可编程IC的存在。
17.如条款8-16中任一项所述的方法,其中所述可编程集成电路是现场可编程门阵列(FPGA)。
18.一种多租户环境中的装置,包括:
主机服务器计算机;
所述主机服务器计算机内的第一可编程集成电路(IC);
所述主机服务器计算机内的第二可编程IC;以及
所述主机服务器计算机具有处理器,该处理器被配置为执行支配管理程序以支持多个虚拟机,所述多个虚拟机至少包括用于操作第一可编程IC的第一虚拟机和用于操作第二可编程IC的第二虚拟机。
19.如权利要求18所述的装置,还包括耦合到第一可编程IC的第三可编程IC,其中第一可编程IC和第三可编程IC耦合在一起以在它们之间进行通信。
20.如权利要求19所述的装置,还包括在主机服务器计算机内的第四可编程IC,其中第四可编程IC与第一和第三可编程IC隔离并且耦合到第二可编程IC。
21.如条款18-20中任一项所述的装置,其中所述第一可编程IC位于第一可编程逻辑子集中,并且所述第二可编程IC位于第二可编程逻辑子集中,并且其中,所述主机服务器计算机包括由第一虚拟机和第二虚拟机隔离控制的多个可编程逻辑子集。
22.如条款21所述的装置,其中所述第一子集包括与所述第二子集不同数量的可编程IC。
尽管为了便于呈现,以特定的顺序次序描述了一些所公开的方法的操作,但是应该理解,这种描述方式包括重新布置,除非下面阐述的特定语言需要特定的排序。例如,在某些情况下,顺序描述的操作可以重新排列或同时执行。此外,为了简单起见,附图可能未示出所公开的方法可以与其他方法结合使用的各种方式。
任何所公开的方法可以实现为存储在一种或多种计算机可读存储介质(例如,一个或多个光学介质盘、易失性存储器组件(诸如DRAM或SRAM)或非易失性存储器组件(诸如闪存或硬盘驱动程序))上并且在计算机(例如,任何商用计算机,包括智能电话或包括计算硬件的其他移动设备)上执行的计算机可执行指令。术语计算机可读存储介质不包括通信连接,例如信号和载波。用于实现所公开的技术的任何计算机可执行指令以及在所公开的实施例的实现期间创建和使用的任何数据可以存储在一种或多种计算机可读存储介质上。计算机可执行指令可以是例如专用软件应用程序或经由web浏览器或其他软件应用程序(诸如远程计算应用程序)访问或下载的软件应用程序的一部分。这样的软件可以例如使用一个或多个网络计算机在单个本地计算机(例如,任何合适的商用计算机)上或在网络环境中(例如,经由因特网、广域网、局域网、客户端-服务器网络(例如云计算网络)或其他此类网络)执行。
为清楚起见,仅描述了基于软件的实现方式的某些所选方面。省略了本领域公知的其他细节。例如,应该理解,所公开的技术不限于任何特定的计算机语言或程序。例如,所公开的技术可以通过用C++、Java、Perl、JavaScript、Adobe Flash或任何其他合适的编程语言编写的软件来实现。同样地,所公开的技术不限于任何特定计算机或硬件类型。合适的计算机和硬件的某些细节是众所周知的,并且不需要在本公开中详细阐述。
还应该很好地理解,本文描述的任何功能可以至少部分地由一个或多个硬件逻辑组件而不是软件来执行。例如但不限于,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统式系统(SOC)、复杂可编程逻辑器件(CPLD)等。
此外,可以通过合适的通信手段上载,下载或远程访问任何基于软件的实施例(包括,例如,用于使计算机执行任何所公开的方法的计算机可执行指令)。这种合适的通信手段包括,例如,因特网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信或其他此类通信手段。
所公开的方法、装置和系统不应被解释为以任何方式进行限制。相反,本公开内容针对各种公开的实施例的所有新颖和非显而易见的特征和方面,单独地并且以彼此的各种组合和子组合。所公开的方法、装置和系统不限于任何特定方面或特征或其组合,所公开的实施例也不要求存在任何一个或多个特定优点或解决问题。
鉴于可以应用所公开发明的原理的许多可能的实施例,应该认识到,所示实施例仅是本发明的优选示例,不应被视为限制本发明的范围。相反,本发明的范围由以下权利要求限定。因此,我们针对本发明声称所有这些都在这些权利要求的范围内。
Claims (15)
1.一种控制多租户环境中的可编程硬件的方法,包括:
在主机服务器计算机上执行第一虚拟机;
在所述主机服务器计算机上执行第二虚拟机;
将可编程硬件加载到一个或多个可编程集成电路的第一子集中;
将可编程硬件加载到一个或多个可编程集成电路的第二子集中;以及
将所述第一子集中的一个或多个可编程集成电路与所述第一虚拟机相关联,并将所述第二子集中的一个或多个可编程集成电路与所述第二虚拟机相关联。
2.根据权利要求1所述的方法,其中,所述主机服务器计算机上的支配管理程序启动所述第一虚拟机和所述第二虚拟机。
3.根据任一前述权利要求所述的方法,其中所述可编程硬件的加载包括在所述第一虚拟机的指导下配置所述可编程硬件的第一部分,以及在所述第二虚拟机的指导下配置所述可编程硬件的第二部分。
4.根据前述权利要求中任一项所述的方法,其中,所述可编程硬件的加载由主机服务器计算机上的支配管理程序或通过所述支配管理程序的控制由所述主机服务器计算机外部的过程来执行。
5.根据前述权利要求中任一项所述的方法,其中,所述第一子集包括至少第一可编程集成电路和第二可编程集成电路,并且其中,所述第一可编程集成电路通过通信信道直接与所述第二可编程集成电路通信。
6.根据权利要求5所述的方法,其中,所述通信信道是包括一个或多个串行通信通道的串行端口。
7.根据权利要求5或6所述的方法,其中,所述第二子集包括与所述第一子集不同数量的可编程集成电路。
8.根据前述权利要求中任一项所述的方法,其中,一个或多个可编程集成电路的第一子集在物理上或逻辑上与一个或多个可编程集成电路的第二子集隔离。
9.根据权利要求8所述的方法,其中,所述一个或多个可编程IC的第一子集不能检测所述多租户环境中的所述第二组一个或多个可编程IC的存在。
10.根据任一前述权利要求所述的方法,其中,所述可编程集成电路是现场可编程门阵列(FPGA)。
11.一种多租户环境中的装置,包括:
主机服务器计算机;
所述主机服务器计算机内的第一可编程集成电路(IC);
所述主机服务器计算机内的第二可编程IC;以及
所述主机服务器计算机具有处理器,该处理器被配置为执行支配管理程序以支持多个虚拟机,所述多个虚拟机至少包括用于操作第一可编程IC的第一虚拟机和用于操作第二可编程IC的第二虚拟机。
12.根据权利要求11所述的装置,还包括耦合到第一可编程IC的第三可编程IC,其中第一可编程IC和第三可编程IC耦合在一起以在它们之间进行通信。
13.根据权利要求12所述的装置,还包括在主机服务器计算机内的第四可编程IC,其中第四可编程IC与第一和第三可编程IC隔离并且耦合到第二可编程IC。
14.根据权利要求11-13中任一项所述的装置,其中,所述第一可编程IC位于第一可编程逻辑子集中,并且所述第二可编程IC位于第二可编程逻辑子集中,并且其中,所述主机服务器计算机包括由第一虚拟机和第二虚拟机隔离控制的多个可编程逻辑子集。
15.根据权利要求11-14中任一项所述的装置,其中,所述第一子集包括与所述第二子集不同数量的可编程IC。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/282,282 | 2016-09-30 | ||
US15/282,282 US10423438B2 (en) | 2016-09-30 | 2016-09-30 | Virtual machines controlling separate subsets of programmable hardware |
PCT/US2017/054176 WO2018064416A1 (en) | 2016-09-30 | 2017-09-28 | Virtual machines controlling separate subsets of programmable hardware |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110383246A true CN110383246A (zh) | 2019-10-25 |
Family
ID=60084099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780060589.6A Pending CN110383246A (zh) | 2016-09-30 | 2017-09-28 | 虚拟机控制可编程硬件的单独子集 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10423438B2 (zh) |
EP (1) | EP3519959A1 (zh) |
JP (1) | JP7044770B2 (zh) |
CN (1) | CN110383246A (zh) |
WO (1) | WO2018064416A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860420A (zh) * | 2019-11-27 | 2021-05-28 | 阿里巴巴集团控股有限公司 | 基于硬件虚拟化的数据处理方法及装置 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10795742B1 (en) * | 2016-09-28 | 2020-10-06 | Amazon Technologies, Inc. | Isolating unresponsive customer logic from a bus |
US10338135B2 (en) | 2016-09-28 | 2019-07-02 | Amazon Technologies, Inc. | Extracting debug information from FPGAs in multi-tenant environments |
US11099894B2 (en) | 2016-09-28 | 2021-08-24 | Amazon Technologies, Inc. | Intermediate host integrated circuit between virtual machine instance and customer programmable logic |
US10223317B2 (en) | 2016-09-28 | 2019-03-05 | Amazon Technologies, Inc. | Configurable logic platform |
US10250572B2 (en) | 2016-09-29 | 2019-04-02 | Amazon Technologies, Inc. | Logic repository service using encrypted configuration data |
US10282330B2 (en) | 2016-09-29 | 2019-05-07 | Amazon Technologies, Inc. | Configurable logic platform with multiple reconfigurable regions |
US10162921B2 (en) | 2016-09-29 | 2018-12-25 | Amazon Technologies, Inc. | Logic repository service |
US10642492B2 (en) | 2016-09-30 | 2020-05-05 | Amazon Technologies, Inc. | Controlling access to previously-stored logic in a reconfigurable logic device |
US11115293B2 (en) | 2016-11-17 | 2021-09-07 | Amazon Technologies, Inc. | Networked programmable logic service provider |
US10540186B1 (en) | 2017-04-18 | 2020-01-21 | Amazon Technologies, Inc. | Interception of identifier from client configurable hardware logic |
US10503551B2 (en) * | 2017-06-07 | 2019-12-10 | Dell Products L.P. | Coordinating FPGA services using cascaded FPGA service managers |
US10402219B2 (en) | 2017-06-07 | 2019-09-03 | Dell Products L.P. | Managing shared services in reconfigurable FPGA regions |
US11474555B1 (en) * | 2017-08-23 | 2022-10-18 | Xilinx, Inc. | Data-driven platform characteristics capture and discovery for hardware accelerators |
US10757082B2 (en) * | 2018-02-22 | 2020-08-25 | International Business Machines Corporation | Transforming a wrapped key into a protected key |
US11563677B1 (en) * | 2018-06-28 | 2023-01-24 | Cable Television Laboratories, Inc. | Systems and methods for secure network management of virtual network function |
US11822946B2 (en) * | 2018-06-28 | 2023-11-21 | Cable Television Laboratories, Inc. | Systems and methods for secure network management of virtual network functions |
US10868887B2 (en) * | 2019-02-08 | 2020-12-15 | Palantir Technologies Inc. | Systems and methods for isolating applications associated with multiple tenants within a computing platform |
US11561815B1 (en) | 2020-02-24 | 2023-01-24 | Amazon Technologies, Inc. | Power aware load placement |
US11704145B1 (en) * | 2020-06-12 | 2023-07-18 | Amazon Technologies, Inc. | Infrastructure-based risk diverse placement of virtualized computing resources |
US12063148B2 (en) | 2020-06-18 | 2024-08-13 | F5, Inc. | Orchestrating configuration of a programmable accelerator |
US11314680B1 (en) * | 2020-10-09 | 2022-04-26 | Raytheon Company | Circuit implementation in resource constrained systems |
US12045643B1 (en) | 2021-06-03 | 2024-07-23 | Amazon Technologies, Inc. | Power aware load placement for sub-lineups |
CN116166198A (zh) * | 2023-02-27 | 2023-05-26 | 阿里巴巴(中国)有限公司 | 一种数据传输方法、设备、系统及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699508A (zh) * | 2015-03-25 | 2015-06-10 | 南京大学 | 云计算平台中快速部署和更新虚拟环境系统及其方法 |
CN105493045A (zh) * | 2013-08-05 | 2016-04-13 | 亚马逊技术股份有限公司 | 虚拟计算实例迁移 |
Family Cites Families (74)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6011407A (en) | 1997-06-13 | 2000-01-04 | Xilinx, Inc. | Field programmable gate array with dedicated computer bus interface and method for configuring both |
WO2000031652A2 (en) | 1998-11-20 | 2000-06-02 | Altera Corporation | Reconfigurable programmable logic device computer system |
US6539438B1 (en) | 1999-01-15 | 2003-03-25 | Quickflex Inc. | Reconfigurable computing system and method and apparatus employing same |
US6785816B1 (en) | 2000-05-01 | 2004-08-31 | Nokia Corporation | System and method for secured configuration data for programmable logic devices |
US6826717B1 (en) | 2000-06-12 | 2004-11-30 | Altera Corporation | Synchronization of hardware and software debuggers |
WO2002001425A2 (en) | 2000-06-23 | 2002-01-03 | Xilinx, Inc. | Method for remotely utilizing configurable hardware |
US6802026B1 (en) | 2001-05-15 | 2004-10-05 | Xilinx, Inc. | Parameterizable and reconfigurable debugger core generators |
US6476634B1 (en) | 2002-02-01 | 2002-11-05 | Xilinx, Inc. | ALU implementation in single PLD logic cell |
GB0304628D0 (en) | 2003-02-28 | 2003-04-02 | Imec Inter Uni Micro Electr | Method for hardware-software multitasking on a reconfigurable computing platform |
US6938488B2 (en) | 2002-08-21 | 2005-09-06 | Battelle Memorial Institute | Acoustic inspection device |
US7177961B2 (en) | 2003-05-12 | 2007-02-13 | International Business Machines Corporation | Managing access, by operating system images of a computing environment, of input/output resources of the computing environment |
US7505891B2 (en) | 2003-05-20 | 2009-03-17 | Verisity Design, Inc. | Multi-user server system and method |
US20050198235A1 (en) | 2004-01-29 | 2005-09-08 | Arvind Kumar | Server configuration and management |
US7281082B1 (en) | 2004-03-26 | 2007-10-09 | Xilinx, Inc. | Flexible scheme for configuring programmable semiconductor devices using or loading programs from SPI-based serial flash memories that support multiple SPI flash vendors and device families |
US8621597B1 (en) | 2004-10-22 | 2013-12-31 | Xilinx, Inc. | Apparatus and method for automatic self-erasing of programmable logic devices |
US8458467B2 (en) | 2005-06-21 | 2013-06-04 | Cisco Technology, Inc. | Method and apparatus for adaptive application message payload content transformation in a network infrastructure element |
US7716497B1 (en) | 2005-06-14 | 2010-05-11 | Xilinx, Inc. | Bitstream protection without key storage |
US7739092B1 (en) | 2006-01-31 | 2010-06-15 | Xilinx, Inc. | Fast hardware co-simulation reset using partial bitstreams |
US7715433B2 (en) | 2006-07-14 | 2010-05-11 | Boren Gary W | Universal controller and signal monitor |
US7856545B2 (en) | 2006-07-28 | 2010-12-21 | Drc Computer Corporation | FPGA co-processor for accelerated computation |
US7734859B2 (en) | 2007-04-20 | 2010-06-08 | Nuon, Inc | Virtualization of a host computer's native I/O system architecture via the internet and LANs |
US7564727B1 (en) | 2007-06-25 | 2009-07-21 | Xilinx, Inc. | Apparatus and method for configurable power management |
US7902866B1 (en) | 2007-08-27 | 2011-03-08 | Virginia Tech Intellectual Properties, Inc. | Wires on demand: run-time communication synthesis for reconfigurable computing |
US7904629B2 (en) | 2007-10-02 | 2011-03-08 | NVON, Inc. | Virtualized bus device |
US8145894B1 (en) | 2008-02-25 | 2012-03-27 | Drc Computer Corporation | Reconfiguration of an accelerator module having a programmable logic device |
US9064058B2 (en) | 2008-12-24 | 2015-06-23 | Nuon, Inc. | Virtualized PCI endpoint for extended systems |
US8560758B2 (en) * | 2009-08-24 | 2013-10-15 | Red Hat Israel, Ltd. | Mechanism for out-of-synch virtual machine memory management optimization |
US8626970B2 (en) | 2010-06-23 | 2014-01-07 | International Business Machines Corporation | Controlling access by a configuration to an adapter function |
US8516272B2 (en) | 2010-06-30 | 2013-08-20 | International Business Machines Corporation | Secure dynamically reconfigurable logic |
US8881141B2 (en) | 2010-12-08 | 2014-11-04 | Intenational Business Machines Corporation | Virtualization of hardware queues in self-virtualizing input/output devices |
CN102736945B (zh) | 2011-03-31 | 2016-05-18 | 国际商业机器公司 | 一种运行应用程序的多个实例的方法和系统 |
US9218195B2 (en) | 2011-05-17 | 2015-12-22 | International Business Machines Corporation | Vendor-independent resource configuration interface for self-virtualizing input/output device |
KR101614859B1 (ko) | 2011-12-02 | 2016-04-22 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 서비스로써의 집적 회로 |
US9448846B2 (en) | 2011-12-13 | 2016-09-20 | International Business Machines Corporation | Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines |
US9465632B2 (en) | 2012-02-04 | 2016-10-11 | Global Supercomputing Corporation | Parallel hardware hypervisor for virtualizing application-specific supercomputers |
US8775576B2 (en) | 2012-04-17 | 2014-07-08 | Nimbix, Inc. | Reconfigurable cloud computing |
US9619292B2 (en) | 2012-04-30 | 2017-04-11 | Alcatel Lucent | Resource placement in networked cloud based on resource constraints |
US9104453B2 (en) | 2012-06-21 | 2015-08-11 | International Business Machines Corporation | Determining placement fitness for partitions under a hypervisor |
CN103577266B (zh) | 2012-07-31 | 2017-06-23 | 国际商业机器公司 | 用于对现场可编程门阵列资源进行分配的方法及系统 |
US20140380025A1 (en) | 2013-01-23 | 2014-12-25 | Empire Technology Development Llc | Management of hardware accelerator configurations in a processor chip |
US9361416B2 (en) | 2013-01-30 | 2016-06-07 | Empire Technology Development Llc | Dynamic reconfiguration of programmable hardware |
US9747185B2 (en) | 2013-03-26 | 2017-08-29 | Empire Technology Development Llc | Acceleration benefit estimator |
WO2014189529A1 (en) | 2013-05-24 | 2014-11-27 | Empire Technology Development, Llc | Datacenter application packages with hardware accelerators |
US8910109B1 (en) | 2013-08-12 | 2014-12-09 | Altera Corporation | System level tools to support FPGA partial reconfiguration |
WO2015030731A1 (en) | 2013-08-27 | 2015-03-05 | Empire Technology Development Llc | Speculative allocation of instances |
US9098662B1 (en) | 2013-08-28 | 2015-08-04 | Altera Corporation | Configuring a device to debug systems in real-time |
CN105579959B (zh) | 2013-09-24 | 2019-06-07 | 渥太华大学 | 硬件加速器虚拟化 |
US9904749B2 (en) | 2014-02-13 | 2018-02-27 | Synopsys, Inc. | Configurable FPGA sockets |
US9483639B2 (en) | 2014-03-13 | 2016-11-01 | Unisys Corporation | Service partition virtualization system and method having a secure application |
US9298865B1 (en) | 2014-03-20 | 2016-03-29 | Altera Corporation | Debugging an optimized design implemented in a device with a pre-optimized design simulation |
US9503093B2 (en) * | 2014-04-24 | 2016-11-22 | Xilinx, Inc. | Virtualization of programmable integrated circuits |
US9851998B2 (en) * | 2014-07-30 | 2017-12-26 | Microsoft Technology Licensing, Llc | Hypervisor-hosted virtual machine forensics |
US10230591B2 (en) | 2014-09-30 | 2019-03-12 | Microsoft Technology Licensing, Llc | Network resource governance in multi-tenant datacenters |
US9672935B2 (en) | 2014-10-17 | 2017-06-06 | Lattice Semiconductor Corporation | Memory circuit having non-volatile memory cell and methods of using |
US9762392B2 (en) | 2015-03-26 | 2017-09-12 | Eurotech S.P.A. | System and method for trusted provisioning and authentication for networked devices in cloud-based IoT/M2M platforms |
US10027543B2 (en) | 2015-04-17 | 2018-07-17 | Microsoft Technology Licensing, Llc | Reconfiguring an acceleration component among interconnected acceleration components |
US9983938B2 (en) | 2015-04-17 | 2018-05-29 | Microsoft Technology Licensing, Llc | Locally restoring functionality at acceleration components |
US20160323143A1 (en) | 2015-05-02 | 2016-11-03 | Hyeung-Yun Kim | Method and apparatus for neuroplastic internet of things by cloud computing infrastructure as a service incorporating reconfigurable hardware |
US9678681B2 (en) | 2015-06-17 | 2017-06-13 | International Business Machines Corporation | Secured multi-tenancy data in cloud-based storage environments |
US9684743B2 (en) | 2015-06-19 | 2017-06-20 | Synopsys, Inc. | Isolated debugging in an FPGA based emulation environment |
US10387209B2 (en) | 2015-09-28 | 2019-08-20 | International Business Machines Corporation | Dynamic transparent provisioning of resources for application specific resources |
US10013212B2 (en) | 2015-11-30 | 2018-07-03 | Samsung Electronics Co., Ltd. | System architecture with memory channel DRAM FPGA module |
US9590635B1 (en) | 2015-12-03 | 2017-03-07 | Altera Corporation | Partial reconfiguration of programmable devices |
US20170187831A1 (en) | 2015-12-29 | 2017-06-29 | Itron, Inc. | Universal Abstraction Layer and Management of Resource Devices |
US9940483B2 (en) | 2016-01-25 | 2018-04-10 | Raytheon Company | Firmware security interface for field programmable gate arrays |
US10402566B2 (en) | 2016-08-01 | 2019-09-03 | The Aerospace Corporation | High assurance configuration security processor (HACSP) for computing devices |
US10511589B2 (en) | 2016-09-14 | 2019-12-17 | Oracle International Corporation | Single logout functionality for a multi-tenant identity and data security management cloud service |
US10846390B2 (en) | 2016-09-14 | 2020-11-24 | Oracle International Corporation | Single sign-on functionality for a multi-tenant identity and data security management cloud service |
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 |
US10250572B2 (en) | 2016-09-29 | 2019-04-02 | Amazon Technologies, Inc. | Logic repository service using encrypted configuration data |
US10282330B2 (en) | 2016-09-29 | 2019-05-07 | Amazon Technologies, Inc. | Configurable logic platform with multiple reconfigurable regions |
US10642492B2 (en) | 2016-09-30 | 2020-05-05 | Amazon Technologies, Inc. | Controlling access to previously-stored logic in a reconfigurable logic device |
-
2016
- 2016-09-30 US US15/282,282 patent/US10423438B2/en active Active
-
2017
- 2017-09-28 JP JP2019517432A patent/JP7044770B2/ja active Active
- 2017-09-28 EP EP17784484.2A patent/EP3519959A1/en not_active Ceased
- 2017-09-28 WO PCT/US2017/054176 patent/WO2018064416A1/en unknown
- 2017-09-28 CN CN201780060589.6A patent/CN110383246A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105493045A (zh) * | 2013-08-05 | 2016-04-13 | 亚马逊技术股份有限公司 | 虚拟计算实例迁移 |
CN104699508A (zh) * | 2015-03-25 | 2015-06-10 | 南京大学 | 云计算平台中快速部署和更新虚拟环境系统及其方法 |
Non-Patent Citations (1)
Title |
---|
KEN EGURO 等: ""FPGAs for trusted cloud computing"", 《22ND INTERNATIONAL CONFERENCE ON FIELD PROGRAMMABLE LOGIC AND APPLICATIONS (FPL)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860420A (zh) * | 2019-11-27 | 2021-05-28 | 阿里巴巴集团控股有限公司 | 基于硬件虚拟化的数据处理方法及装置 |
CN112860420B (zh) * | 2019-11-27 | 2024-06-11 | 阿里巴巴集团控股有限公司 | 基于硬件虚拟化的数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2018064416A1 (en) | 2018-04-05 |
US20180095774A1 (en) | 2018-04-05 |
US10423438B2 (en) | 2019-09-24 |
JP7044770B2 (ja) | 2022-03-30 |
EP3519959A1 (en) | 2019-08-07 |
JP2019535078A (ja) | 2019-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110383246A (zh) | 虚拟机控制可编程硬件的单独子集 | |
CN109791536A (zh) | 可配置逻辑平台 | |
CN109791500B (zh) | 虚拟机实例和客户可编程逻辑之间的中间主机集成电路 | |
CN109791508A (zh) | 具有多个可重配置区域的可配置逻辑平台 | |
CN110088741A (zh) | 控制在可重新配置逻辑设备中访问先前存储的逻辑 | |
CN110520847A (zh) | 控制和状态信号的虚拟化 | |
CN109791518A (zh) | 从多租户环境中的fpga提取调试信息 | |
CN110088734A (zh) | 逻辑储存库服务 | |
CN110023905A (zh) | 联网可编程逻辑服务提供商 | |
CN110063051A (zh) | 可重新配置的服务器 | |
US20190042329A1 (en) | System with programmable multi-context accelerator circuitry | |
CN110998555A (zh) | 支持可适应性主机逻辑的逻辑仓储服务 | |
US10860357B1 (en) | Secure reconfiguring programmable hardware with host logic comprising a static portion and a reconfigurable portion | |
US11003618B1 (en) | Out-of-band interconnect control and isolation | |
US20240248739A1 (en) | Automate suspension and redeployment of cloud resources | |
JP2024524398A (ja) | コンテナクラスタのストレージリソースを管理するための方法および装置、ならびにシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |