首页 / 专利库 / 电脑零配件 / 硬件 / 虚拟机实例和客户可编程逻辑之间的中间主机集成电路

虚拟机实例和客户可编程逻辑之间的中间主机集成电路

阅读:15发布:2024-02-06

专利汇可以提供虚拟机实例和客户可编程逻辑之间的中间主机集成电路专利检索,专利查询,专利分析的服务。并且说明了一种多租户环境,其具有位于主机 服务器 计算机上的可配置 硬件 逻辑(例如,现场可编程 门 阵列(FPGA))。为了与可配置硬件逻辑进行通信,中间主机集成 电路 (IC)位于可配置硬件逻辑和在主机服务器计算机上执行的 虚拟机 之间。主机IC可以包括管理功能和映射功能,该映射功能用于映射可配置硬件逻辑和虚拟机之间的 请求 。共享 外围设备 可以位于主机IC或可配置硬件逻辑上。主机IC可以在不同的可配置硬件逻辑中分配资源,以确保没有一个客户可以过度消耗资源。,下面是虚拟机实例和客户可编程逻辑之间的中间主机集成电路专利的具体信息内容。

1.一种多租户环境中的装置,所述装置包括:
主机服务器计算机,所述主机服务器计算机具有被配置为执行管理用管理程序和至少第一和第二虚拟机实例的处理器;
位于所述主机服务器计算机内的第一可编程集成电路IC,所述第一可编程集成电路可编程以包括与所述第一虚拟机实例关联的硬件逻辑;
位于所述主机服务器计算机内的第二可编程集成电路IC,所述第二可编程集成电路可编程以包括与所述第二虚拟机实例关联的硬件逻辑;和
位于所述第一虚拟机实例和所述第一可编程IC之间且位于所述第二虚拟机实例和所述第二可编程IC之间的主机IC,所述主机IC将所述第一可编程IC映射到所述第一虚拟机实例且将所述第二可编程IC映射到所述第二虚拟机实例。
2.如权利要求1所述的装置,其中,所述主机IC包括用于与所述第一虚拟机实例和所述第二虚拟机实例进行通信的接口端点,和用于与所述第一可编程IC和所述第二可编程IC进行通信的接口。
3.如前述任一权利要求所述的装置,其中,所述主机IC包括用于将所述第一虚拟机实例与所述第一可编程IC或所述第二可编程IC进行关联的映射逻辑。
4.如前述任一权利要求所述的装置,其中,所述第一可编程IC和所述第二可编程IC中的每个在其中均具有被编程的沙箱硬件逻辑。
5.如前述任一权利要求所述的装置,其中,所述主机IC包括共享外围设备,且其中,所述主机IC控制所述第一可编程IC和所述第二可编程IC中的每个均能够使用的资源量。
6.如前述任一权利要求所述的装置,其中,所述主机IC包括路由逻辑,且所述第一可编程IC和所述第二可编程IC包括用于与所述主机IC进行通信的接口端点。
7.一种控制多租户环境中的可编程硬件的方法,所述方法包括:
执行所述多租户环境中的主机服务器计算机上的虚拟机实例,所述主机服务器计算机包括多个可编程集成电路IC;和
使用位于所述虚拟机实例和所述多个可编程IC之间的一个或多个主机IC将所述多个可编程IC中的第一可编程IC映射到所述虚拟机实例。
8.如权利要求7所述的方法,其中,所述主机IC具有用于与所述虚拟机实例进行通信的接口端点,和用于与所述第一可编程IC内的端点进行通信的路由逻辑。
9.如权利要求7或8所述的方法,其中,所述第一可编程IC包括主机部和与所述虚拟机实例关联的部分,所述主机部包括用于与所述主机IC进行通信的接口。
10.如权利要求7至9中任一项所述的方法,其中,所述主机IC包括具有串行端口的共享外围设备。
11.如权利要求7至10中任一项所述的方法,其中,所述主机服务器计算机包括管理用管理程序,且所述方法还包括:使用所述管理用管理程序启动所述虚拟机实例,并且配置所述一个或多个主机IC。
12.如权利要求7至11中任一项所述的方法,其中,所述多个可编程IC是现场可编程阵列FPGA。
13.如权利要求7至12中任一项所述的方法,其中,所述主机IC是现场可编程门阵列FPGA。
14.如权利要求7至13中任一项所述的方法,其中,所述多个可编程IC通过外围总线耦接到所述主机IC。
15.如权利要求7至14中任一项所述的方法,其中,在所述多个可编程IC之间阻止通信。

说明书全文

虚拟机实例和客户可编程逻辑之间的中间主机集成电路

背景技术

[0001] 计算是使用可在远程位置可用且可通过网络(例如因特网)访问的计算资源(硬件软件)。用户可以根据需要购买这些计算资源(包括存储和计算能)作为实用程序。云计算通过用户的数据、软件和计算来委托远程服务。使用虚拟计算资源可以提供许多优势,该优势包括成本优势和/或快速适应变化的计算资源需求的能力。
[0002] 大型计算机系统的用户可能具有由于不同的用例而导致的各种计算要求。云或计算服务提供者可以提供具有不同类型的组件的各种不同的计算机系统,这些组件具有不同级别的性能和/或功能。因此,用户可以选择在执行特定任务时可能更有效的计算机系统。例如,计算服务提供者可以提供具有处理性能、内存性能、存储容量或性能和网络容量或性能的不同组合的系统。通常,多个客户可以共享和利用计算服务提供者提供的通用资源,从而使客户使用计算服务提供者的服务更具有成本效益。
附图说明
[0003] 图1是示例性系统图,其中,主机逻辑集成电路(IC)位于用于客户逻辑的多个可编程IC之间。
[0004] 图2是示意了主机逻辑IC的进一步细节的示例性实施例
[0005] 图3是实施例的示例,其中,主机逻辑IC是位于虚拟机和多个客户FPGA之间的现场可编程阵列(FPGA),其中,主机逻辑IC包括共享外围设备
[0006] 图4是根据另一实施例的示例,其中,共享外围设备位于客户FPGA内。
[0007] 图5是示意了在多租户环境中运行的多个虚拟机实例的示例性系统图,其中,主机IC位于虚拟机和客户可配置硬件之间。
[0008] 图6是使用中间主机IC将请求路由到可编程IC的方法的流程图
[0009] 图7是根据另一实施例的使用中间主机将请求路由到可编程IC的方法的流程图。
[0010] 图8描绘了可以实现所述创新的合适计算环境的一般化示例。
[0011] 图9是根据另一实施例的示例性系统图,其中,多个主机IC位于可编程IC和虚拟机之间。

具体实施方式

[0012] 在某些方面,在云环境中提供定制硬件违背跨多个客户共享通用硬件(例如服务器计算机)的核心益处之一。然而,诸如现场可编程门阵列(FPGA)等可编程逻辑足够通用,并且可以由客户编程,然后由其他客户重新使用。因此,用于在一组可重新使用通用计算资源内提供专用计算资源的一种解决方案是提供包括可配置逻辑平台的服务器计算机(例如通过提供具有包括一个或多个FPGA的附加卡的服务器计算机)作为通用计算资源中的选择。可配置逻辑是可以被编程或被配置为执行逻辑功能的硬件,该逻辑功能由被应用于或被加载到可配置逻辑上的配置数据指定。例如,计算资源的用户可以提供用于配置可配置逻辑的规范(例如以硬件描述语言编写的源代码),可配置逻辑可以根据该规范来配置,且配置的逻辑可以用于为用户执行任务。然而,允许用户访问计算设施的低级硬件可能潜在地在计算设施内引入安全性和隐私问题。作为具体示例,如果配置的逻辑导致计算设施内的一个或多个服务器计算机发生故障(例如,崩溃、挂起或重启)或拒绝网络服务,那么来自一个用户的错误或恶意设计可能潜在地导致拒绝给其他用户提供服务。作为另一具体示例,如果配置的逻辑能够读取和/或写入另一用户的存储空间的存储器,那么来自一个用户的错误或恶意设计可能潜在地破坏或读取来自另一用户的数据。
[0013] 如本文所述,计算服务的设施可以包括各种计算资源,其中一类计算资源可以包括具有可配置逻辑平台的服务器计算机。可配置逻辑平台可以由计算机系统的用户编程或配置,使得计算资源的硬件(例如,可配置逻辑)由用户定制。例如,用户可以编程可配置逻辑,使得其起到紧密耦接至服务器计算机的硬件加速器的作用。作为具体示例,可以通过服务器计算机的本地互连(例如,外围组件互连高速(PCI-Express或PCIe))访问硬件加速器。用户可以执行服务器计算机上的应用,且应用的任务可以由硬件加速器使用PCIe事务来执行。通过将硬件加速器紧密耦接至服务器计算机,可以减小加速器和服务器计算机之间的延迟,这可以潜在地增加应用的处理速度。可配置逻辑平台可以是各种各样的可配置逻辑IC,但是常规示例是FPGA,其将用于下面的具体示例中,但是应理解,可以替代地使用其他可重新配置硬件。
[0014] 计算服务提供者可以通过将用户的硬件(这里也被称为应用逻辑)包装或封装在可配置逻辑平台的主机逻辑内来潜在地增加计算资源的安全性和/或可用性。封装应用逻辑可以包括限定或限制应用逻辑对配置资源、物理接口、可配置逻辑平台的硬宏(hard macro)和可配置逻辑平台的各种外围设备的访问。例如,计算服务提供者可以管理可配置逻辑平台的编程,使得其包括主机逻辑和应用逻辑。主机逻辑可以提供应用逻辑在其中工作的框架或沙箱。特别地,主机逻辑可以与应用逻辑通信,并且约束应用逻辑的功能。例如,主机逻辑可以进行本地互连(例如,PCIe互连)和应用逻辑之间的桥接功能,使得应用逻辑不能直接控制本地互连上的信令。主机逻辑可以负责形成本地互连上的分组或总线事务,并且确保满足协议要求。通过控制本地互连上的事务,主机逻辑可以潜在地防止有缺陷的事务或防止事务到越界位置。作为另一示例,主机逻辑可以隔离配置访问端口,使得应用逻辑不能在不使用计算服务提供者提供的服务的情况下使可配置逻辑平台被重新编程。
[0015] 在一些实施例中,主机逻辑可以位于单独的IC(例如,FPGA,专用IC(ASIC)或片上系统(SoC))上,位于虚拟机和可配置硬件平台之间,并且由管理程序编程。中间主机逻辑IC为客户提供:可配置硬件平台完全由客户控制的体验;使用PCIe接口与虚拟机通信的能力;执行部分动态重新配置(PDR)的能力;混合存储器立方(HMC)或其他标准存储器接口等。在一些实施例中,中间主机逻辑IC可以向虚拟机提供面向上的PCIe接口,并且向客户FPGA提供面向下的PCIe接口。这样,客户FPGA就像与虚拟机直接通信一样地操作,且虚拟机就像与客户FPGA直接通信一样地操作。相反,主机IC可以在传递虚拟机和客户FPGA之间通信(也被称为事务或指令)的同时,提供任何期望的中间管理和安全功能。在一些实施例中,一些附加的主机逻辑可以位于客户FPGA内,例如通过向客户提供加密的RTL以包括在客户逻辑中。主机逻辑IC虚拟化客户FPGA,使得客户逻辑就像与虚拟机直接通信一样地操作。
[0016] 主机逻辑IC也可以执行映射功能,其中,其将通信从多个虚拟机映射到适当的客户FPGA。因此,通过单个主机IC,多个虚拟机可以与包括客户逻辑的不同可编程IC通信。
[0017] 图1是示意了包括主机服务器计算机102的示例性计算系统100的系统图,该主机服务器计算机102具有由虚线108粗略分开的软件部(SW)104和硬件部(HW)106。硬件部106包括通常被示意为其他硬件110的一个或多个CPU、存储器、存储设备等。硬件部106还可以包括通常以120示出的可编程集成电路(IC)。可编程IC可以是FPGA或其他类型的可编程逻辑,例如复杂可编程逻辑器件(CPLD)。可编程IC被设计为在制造后由客户编程,并且包含可编程逻辑块阵列和将逻辑块链接在一起的可配置互连。可以对逻辑块进行编程,以执行从简单门到复杂组合功能的硬件功能。在任何情况下,可编程IC至少指的是被编程的硬件的门,且不意味着包括将简单的值存储在寄存器中以配置现有的硬件功能。相反,它是由编程形成的硬件本身。如下面进一步所述,可以在主机服务器计算机102中使用任何数量的可编程IC 120。此外,可编程IC 120可以包括来自不同客户的逻辑,使得多个客户在不知道彼此存在的情况下在同一服务器计算机102上操作。
[0018] 硬件部106还包括至少一个中间主机逻辑IC 122,该中间主机逻辑IC 122执行可编程IC120和软件部104之间的管理、安全和映射功能。主机逻辑IC也可以是可重新编程逻辑,例如FPGA,或也可以是其他不可重新编程硬件,例如ASIC或SoC。
[0019] 在软件部104中对硬件106上方的层进行运行的是管理程序或内核层,其在本示例中被示意为包括管理用管理程序130。管理程序或内核层可以分类为类型1或类型2管理程序。类型1管理程序直接在主机硬件上运行,以控制硬件和管理客户操作系统。类型2管理程序在常规的操作系统环境内运行。因此,在类型2的环境中,管理程序可以是操作系统上方运行的独特层,并且操作系统与系统硬件交互。不同类型的管理程序包括基于Xen、Hyper-V、ESXi/ESX、Linux等,但是可以使用其他管理程序。管理用管理程序130通常可以包括访问硬件106所需的设备驱动器
[0020] 软件部104可以包括通常以140示出的用于运行虚拟机的多个分区。分区是管理程序隔离的逻辑单元,并且执行虚拟机。每个分区可以分配其自己的硬件层的内存部分、CPU分配、存储等。此外,每个分区可以包括虚拟机和自己的客户操作系统。因此,每个分区是容量的抽象部,被设计为独立于其他分区地支持自己的虚拟机。每个虚拟机140可以通过硬件接口(未示出,但是在下面进一步说明)与主机逻辑IC 122通信。主机逻辑IC 122可以将通信映射到适当的可编程IC 120,使得可编程IC 120认为它们与虚拟机140直接通信。在一些实施例中,主机逻辑150的薄层可以被包括在与客户关联的可编程IC 120中。如下面进一步说明,附加的主机逻辑150可以包括用于主机逻辑IC 122和可编程IC 120之间通信的接口逻辑。
[0021] 在一个示例中,管理程序可以是基于Xen的管理程序,然而可以如上所述地使用其他管理程序。在Xen示例中,管理用管理程序130是域0(也被称为Dom 0),而VM(虚拟机)140是域U客户。域0管理程序具有访问物理I/O资源以及与域U客户交互的特殊权限。域U客户未经域0授权不能访问硬件层106。因此,域0是管理层,其确保可编程IC 120的逻辑隔离(沙箱化)。
[0022] 管理用管理程序130负责可编程IC 120,包括可编程IC的配置和控制。此外,管理用管理程序130可以控制接口总线,例如PCIe接口。通过该接口,管理用管理程序130管理和控制可编程IC 120中的硬件编程。然而,可编程IC 120的编程也可以直接从虚拟机140通过主机逻辑IC 122发生。这样,管理用管理程序130可以安全地管理可编程IC配置端口,并且保护在可编程IC内编程的客户IP。此外,管理用管理程序130也用作外部管理服务的主接口,以用于可编程IC的配置和操作。然而,当管理用管理程序130执行可编程IC的编程和管理时,它可以通过中间主机逻辑IC 122来实现,该中间主机逻辑IC 122也位于管理用管理程序130和可编程IC之间。因此,主机逻辑IC 122可以是中间IC,其包括用于将通信从多个虚拟机140路由到多个可编程IC 120的主机逻辑,并且主机逻辑IC 122可以为多个可编程IC 120提供额外的管理、安全和配置。
[0023] 图2提供了用于虚拟化客户可编程IC的系统210的另一实施例。系统210包括主机服务器计算机212,该主机服务器计算机212包括软件部220和硬件部222。软件部220包括管理用管理程序232和多个虚拟机230。管理用管理程序232将服务器计算机的资源分配给虚拟机230,使得每个虚拟机可以共享主机服务器计算机212的处理能力、存储器等。每个虚拟机230可以关联各自的可编程IC 250至252,其中,主机服务器计算机212中存在任何整数个可编程IC。尽管未图示,但是任一虚拟机230可以与多个可编程IC 250至252(例如,FPGA)通信。虚拟机230和可编程IC 250至252之间的通信经由中间主机逻辑IC 260发生,该中间主机逻辑IC 260本身可以是由管理用管理程序232编程的可编程硬件逻辑,例如FPGA。主机逻辑IC 260也可以是固定的,不可编程硬件逻辑,例如ASIC。
[0024] 主机逻辑IC 260包括接口端点262,该接口端点262被设计为使得虚拟机230认为它们与可编程IC 250至252直接通信。然而,相反,它们的通信通过映射功能264来传递,映射功能264确定哪个可编程IC 250至252应该转发通信。此外,在266处,主机逻辑IC 260可以包括管理硬件266,该管理硬件266执行安全功能、监视功能等。管理硬件266也确保可编程IC 250至252的封装或沙箱化,使得一个客户不能获得与另一个客户的可编程IC的操作关联的安全信息。同样,管理逻辑266可以包括确保可编程IC不比其他可编程IC使用更多资源的功能。管理逻辑266可以将通信传递到接口268,然后,接口268将通信发送到与发送通信的虚拟机关联的相应可编程IC上的适当端点接口280。从可编程IC 250至252返回到虚拟机230的通信以类似的方式发生。可编程IC 250至252通过接口280进行通信,就像它们与虚拟机230直接通信一样。主机逻辑IC 260还包括配置和管理功能270,该配置和管理功能270可以由管理用管理程序232用于对可编程IC 250至252进行编程。
[0025] 可编程IC可以包括可重新配置逻辑块(可重新配置硬件)和其他硬件。可重新配置逻辑块可以被配置或被编程,以执行计算服务提供者的客户所期望的各种功能。可重新配置逻辑块可以使用不同的配置被编程多次,使得块可以在设备的整个寿命期间执行不同的硬件功能。可编程IC 250的功能可以根据每个功能的目的或能力来分类,或根据功能何时被加载到可编程IC 250中来分类。例如,可编程IC 250可以包括静态逻辑、可重新配置逻辑和硬宏。静态逻辑、可重新配置逻辑和硬宏的功能可以在不同的时间来配置。因此,可以逐渐加载可编程IC 250的功能。
[0026] 硬宏可以执行预定的功能,并且可以当可编程IC上电时可用。例如,硬宏可以包括执行特定功能的硬接线电路。作为具体示例,硬宏可以包括用于配置可编程IC 250的配置访问端口(CAP)、用于传送串行数据的串行器-解串器收发器(SERDES)、用于发信号和控制片外存储器(例如,双倍数据速率(DDR)DRAM)的存储器或动态随机存取存储器(DRAM)控制器和用于发信号和控制存储设备的存储器控制器。其他类型的通信端口可以用作共享外围设备接口。其他类型包括但是不限于以太网(Ethernet)、环形拓扑或其他类型的网络连接接口。
[0027] 静态逻辑可以在开机时加载到可重新配置逻辑块上。例如,指定静态逻辑功能的配置数据可以在开机序列期间从片上或片外闪存设备来加载。开机序列可以包括检测电源事件(例如,通过检测到电源电压已经从低于阈值转变到高于阈值)和响应于电源事件而解除断定复位信号。初始化序列可以响应于电源事件或解除断定复位而被触发。初始化序列可以包括读取存储在闪存设备上的配置数据和将配置数据加载到可编程IC上,使得可重新配置逻辑块的至少一部分使用静态逻辑的功能来编程。在加载静态逻辑后,可编程IC 250可以从加载状态转变到包括静态逻辑的功能的操作状态。
[0028] 当可编程IC 250可操作时(例如,在加载了静态逻辑后),可重新配置逻辑可以加载到可重新配置逻辑块上。可以将与可重新配置逻辑对应的配置数据存储在片上或片外存储器上和/或可以从接口(例如,接口280)接收或流传输配置数据。可重新配置逻辑可以被划分为不重叠区,其可以与静态逻辑接口连接。例如,可重新配置区域可以布置成阵列结构,或其他规则或半规则结构。例如,阵列结构可以包括孔或块,其中,硬宏放置在阵列结构内。不同的可重新配置区域可以通过使用可以被指定为静态逻辑的信号线来与彼此、静态逻辑和硬宏进行通信。不同的可重新配置区域可以在不同的时间点来配置,使得第一可重新配置区域可以在第一时间点来配置且第二可重新配置区域可以在第二时间点来配置。
[0029] 可编程IC 250的功能可以根据功能的目的或能力来划分或分类。例如,功能可以分类为控制平面功能、数据平面功能和共享功能。控制平面可以用于管理和配置可编程IC。数据平面可以用于管理加载到可编程IC上的客户逻辑和服务器计算机之间的数据传输。共享功能可以由控制平面和数据平面使用。可以在加载数据平面功能前,将控制平面功能加载到可编程IC 250上。数据平面可以包括封装的使用客户应用逻辑配置的可重新配置逻辑。控制平面可以包括与内容服务提供者关联的主机逻辑。
[0030] 通常,可以使用不同的功能来访问数据平面和控制平面,其中,不同的功能被分配至不同的地址范围。具体地,可以使用管理功能来访问控制平面功能,且可以使用数据路径功能或应用功能来访问数据平面功能。地址映射层264可以区分绑定到控制平面或数据平面的事务。可以通过物理互连来发送且在互连接口280来接收事务。互连接口可以是物理互连的端点。应理解,物理互连可以包括布置在结构中的附加设备(例如,交换机和网桥),以用于将设备或组件连接到服务器计算机212。
[0031] 总之,功能可以分类为控制平面功能和应用功能。控制平面功能可以用于监视和限制数据平面的能力。数据平面功能可以用于加速在服务器计算机上运行的用户应用。通过将控制的功能和数据平面的功能分开,可以潜在地增加服务器计算机212和其他计算基础设施的安全性和可用性。例如,应用逻辑不能直接向物理互连发信号,因为控制平面的中间层控制物理互连的事务的格式化和发信号。作为另一示例,可以防止应用逻辑使用专用外围设备,该专用外围设备可以用于重新配置可编程IC和/或访问可能有特权的管理信息。作为另一示例,应用逻辑可以通过中间层来访问可编程IC的硬宏,使得使用中间层来控制应用逻辑和硬宏之间的任何交互。
[0032] 控制平面功能大部分在主机逻辑IC 260上维护,而数据平面功能在可编程IC 250、252上维护。通过将控制平面和数据平面分成不同的IC,使用可编程IC 250的客户体验更符合非多租户环境。尽管上述的功能涉及可编程IC 250,但是它同样可以应用于主机服务器计算机212上的其他可编程IC(例如,252)的功能。
[0033] 图3是系统300的一个实施例的详细示例,其中,中间主机FPGA 310位于服务器主机312和多个客户FPGA 314、316之间。尽管示出了两个客户FPGA 314、316,但是可以添加额外的客户FPGA。此外,尽管将中间主机310示意为FPGA,但是可以使用其他类型的IC,例如ASIC或SoC。客户FPGA 314、316和主机FPGA 310可以位于主机服务器计算机312的一个或多个插卡上,或位于主机服务器计算机的主板上。
[0034] 服务器主机312可以执行一个或多个虚拟机,例如虚拟机320。在本特定示例中,虚拟机320包括用于支持被编程到客户FPGA 314的加速器硬件的应用,但是可以使用其他硬件来代替加速器。虚拟机320可以包括用户应用322、加速器API 324和应用驱动器326。用户应用322可以经由加速器API 324向客户FPGA 314发送命令和从客户FPGA 314接收请求。API 324通过应用驱动器326传送命令和请求。应用驱动器326通过位于服务器主机312上的PCIe根联合体330进行通信。根联合体将服务器主机312上的处理器和存储器子系统连接到PCI交换结构,该PCI交换结构包括交换设备。这样,根联合体被视为路由逻辑。虚拟机320还包括FPGA管理API 332和FPGA管理驱动器334,其可以用于配置和管理客户FPGA 314。尽管没有示出其他虚拟机,但是每个虚拟机都具有自己的FPGA管理API和管理驱动器,以用于控制各自的FPGA。管理用管理程序340可以执行FPGA管理应用342、FPGA配置344和FPGA管理与监视346。这些应用可以通过FPGA驱动器348来与FPGA进行通信和对FPGA进行控制。管理用管理程序340可以监督和管理包括虚拟机320在内的多个虚拟机。
[0035] 中间主机FPGA 310包括用于配置、管理和与客户FPGA 314、316通信的多个模块。FPGA310包括PCIe端点350,该PCIe端点350充当根联合体330可以将通信切换至的端点。
PCIe映射层352可以区分来自服务器计算机312的绑定到不同客户FPGA 314、316的事务。具体地,如果事务的地址落在客户FPGA 314的地址范围内,那么事务可以相应地路由到FPGA314。非此即彼,如果地址落在客户FPGA 316的范围内,那么事务也如此路由。如果存在其他客户FPGA,那么事务可以类似地路由到该FPGA。事务通过FPGA管理层354,其提供事务的安全和监视以确保在客户之间维持封装。例如,FPGA管层可以潜在地识别违反预定规则的事务或数据,并且可以响应地生成警告。此外或非此即彼,FPGA管理354可以终止生成的违反任何预定标准的任何事务。对于有效的事务,FPGA管理层354可以将事务转发到共享结构层360,然后,共享结构层360可以将事务转发到共享外围设备362,该共享外围设备362可以包括串行端口,例如GTY SerDes、DRAM控制器和存储器控制器。共享外围设备是可从控制平面或数据平面访问的共享功能。共享外围设备是可以具有多个地址映射且可以由控制平面和数据平面使用的组件。共享外围设备的示例包括SerDes接口、DRAM控件(例如,DDR DRAM)、存储设备控件(例如,硬盘驱动器和固态驱动器)和可以用于生成、存储或处理信息的其他各种组件。共享外围设备362可以包括额外的外围设备控件。通过在中间主机FPGA 
310内具有共享外围设备,可以控制任何一个客户使用的资源量,使得所有客户按照公平的比例接收资源。通向FPGA 314、316的通信可以通过FPGA间传输层364,该FPGA间传输层364可以是串行总线、以太网总线、环形拓扑或任何期望的通信机制。其他通信可以通过主机逻辑专用结构370以用于访问专用外围设备372。专用外围设备372是仅可由计算服务提供者访问且客户不能访问的组件。专用外围设备可以包括JTAG(例如,IEEE1149.1)、通用I/O(GPIO)、串行外围接口(SPI)闪存和发光显示器(LED)。图示的外围设备只是示例,且可以使用其他外围设备。
[0036] 邮箱和看门狗定时器374是可从控制平面或数据平面访问的共享功能。具体地,邮箱可以用于传递控制平面和数据平面之间的消息和其他信息。例如,邮箱可以包括缓冲器、控制寄存器(例如信号量)和状态寄存器。通过使用邮箱作为控制平面和数据平面之间的中介,可以潜在地增加数据平面和控制平面之间的隔离,这可以增加可配置硬件平台的安全性。看门狗定时器可以用于检测硬件和/或软件故障并从中恢复。例如,看门狗定时器可以监视执行特定任务所花费的时间量,且如果时间量超过阈值,那么看门狗定时器可以启动事件,例如将值写入控制寄存器或导致中断或复位被断定。
[0037] FPGA配置和管理块376可以包括与管理和配置FPGA 314、316相关的功能。例如,配置和管理块376可以提供用于配置FPGA的访问。具体地,服务器计算机312可以将事务发送至块376以启动客户FPGA 314、316内的沙箱加速器的加载。
[0038] 每个客户FPGA 314、316都可以包括FPGA间传输块380,其是用于对客户FPGA和中间主机FPGA 310之间的数据或控制功能进行传送的通信接口。可以使用加密的RTL代码或其他手段将FPGA间传输块提供给客户以包括在客户逻辑内。主机逻辑包装器382可以位于FPGA间传输接口和沙箱加速器384(其是客户硬件逻辑)之间以促进两者之间的通信。尽管示出了加速器功能,但是可以使用其他客户逻辑功能。
[0039] 中间FPGA 310允许客户FPGA几乎专用于客户,仅有一小部分FPGA包括主机逻辑(即,传输块380和主机逻辑包装器382)。主机FPGA 310可以是物理上比客户FPGA 314、316小的FPGA(较少的可配置逻辑块),并且以与管理用管理程序340虚拟化虚拟机320非常相似的方式从主机服务器计算机312虚拟化客户FPGA。这样,虚拟机320认为其使用PCIe端点350与客户FPGA直接通信。然而,中间FPGA在将数据和/或命令传递给客户FPGA之前执行映射和安全功能。同样,客户FPGA认为其与虚拟机320直接通信,但是为了安全,客户FPGA的消息通过中间FPGA传递,从而监视和映射回相应的虚拟机。
[0040] 图4是系统400的实施例,其中,中间主机FPGA 410位于服务器主机412和多个客户FPGA 414、416之间。与服务器主机412和中间主机FPGA关联的许多块类似于图3中的块,并且为了简洁起见,不再重复说明。然而,在图4的实施例中,共享外围设备420位于客户FPGA 414、416内。因此,中间FPGA 410可以包括PCIe根联合体430。因此,服务器主机412中的第一根联合体432将事务传送到主机FPGA 410中的PCIe端点434。在事务通过PCIe映射和FPGA管理块后,事务被传送到中间FPGA 410中的第二根联合体430,该第二根联合体430决定如何路由事务。例如,取决于识别出的与事务关联的地址范围,PCIe根联合体430将事务路由到客户FPGA 414或客户FPGA 416。根联合体430将事务发送到客户FPGA 414中的PCIe端点
440。然后,PCIe端点440将事务传送到客户加速器逻辑442。客户加速器逻辑442可以访问共享外围设备420,其包含如上所述的外围设备逻辑,并且将下面进一步说明。
[0041] 因此,在本实施例中,存在两层根联合体,其中一层以432位于主机服务器计算机中,另一层以430位于中间主机FPGA中。与图3中一样,中间FPGA允许对客户FPGA进行控制和管理,而在客户FPGA内不需要主机逻辑或需要非常少的主机逻辑。这使客户具有就像他们控制整个FPGA一样的体验。通过为客户提供客户可以合并到其设计中的加密RTL代码,可以将一些主机逻辑包括在客户FPGA中。
[0042] 图5是基于网络的计算服务提供者500的计算系统网,其图示了可以使用这里所述的实施例的一个环境。作为背景,计算服务提供者500(即,云提供者)能够将计算和存储容量作为服务传递到终端接收者的社区。在示例性实施例中,可以由组织或代表组织为组织建立计算服务提供者。即,计算服务提供者500可以提供“专用云环境”。在另一实施例中,计算服务提供者500支持多租户环境,其中多个客户独立操作(即,公共云环境)。一般而言,计算服务提供者500可以提供下面的模型:基础设施即服务(“IaaS”),平台即服务(“PaaS”),和/或软件即服务(“SaaS”)。可以提供其他模型。对于IaaS模型,计算服务提供者500可以将计算机提供为物理或虚拟机及其他资源。虚拟机可以由管理程序作为客户运行,如下面进一步说明。PaaS模型提供一种计算平台,该平台可以包括操作系统、编程语言执行环境数据库和网页服务器。应用开发人员可以在计算服务提供者平台上开发和运行它们的软件解决方案,而无需购买和管理底层硬件和软件的成本。此外,应用开发者可以在计算服务提供者平台的可配置硬件上开发和运行它们的硬件解决方案。SaaS模型允许在计算服务提供者中安装和操作应用软件。在一些实施例中,终端用户使用联网的客户端设备访问计算服务提供者500,该客户端设备例如是运行网页浏览器或其他轻量客户端应用的台式计算机、膝上计算机、平板电脑、智能手机等。本领域技术人员将认识到,计算服务提供者500可以被描述为“云”环境。
[0043] 计算服务提供者500图示的特殊情况包括多个服务器计算机502A至502B。虽然仅示出了两个服务器计算机,但是可以使用任何数量,且大型中心可以包括数千台服务器计算机。服务器计算机502A至502B可以提供用于执行软件实例506A至506B的计算资源。在一个实施例中,软件实例506A至506B是虚拟机。如本领域已知,虚拟机是像物理机器一样执行应用的机器(即,计算机)的软件实现的实例。在虚拟机的示例中,服务器502A至502B中的每个均可以被配置为执行管理程序508或其他类型的程序,该程序被配置为使得能够在单个服务器上执行多个软件实例506。此外,每个软件实例506可以被配置为执行一个或多个应用。
[0044] 应理解,尽管主要在虚拟机的环境中说明了这里公开的实施例,但是可以使用与这里公开的概念和技术一起的其他类型的实例。例如,这里公开的技术可以与存储资源、数据通信资源和其他类型的计算资源一起使用。这里公开的实施例也可以在不使用虚拟机实例的情况下直接在计算机系统上执行所有或部分的应用。
[0045] 服务器计算机502A至502B可以包括不同硬件资源或实例类型的异构集合。硬件实例类型中的一些可以包括可配置硬件,该可配置硬件至少部分地可由计算服务提供者500的用户配置。实例类型的一个示例可以包括服务器计算机502A,该服务器计算机502A经由中间主机IC 516A与可配置硬件504A通信。具体地,服务器计算机502A和主机IC 516A可以通过例如PCIe等本地互连进行通信。同样,主机IC 516A和可配置硬件504A可以通过PCIe接口进行通信。实例类型的另一示例可以包括服务器计算机502B、主机IC 516B和可配置硬件504B。例如,可配置逻辑504B可以集成在多个芯片模块内或在与服务器计算机502B的CPU同一裸片上。因此,可配置硬件504A、504B可以位于服务器计算机502A、502B上或外。在又一个实施例中,主机IC 516A或516B可以位于主机服务器计算机502A或502B的外部。
[0046] 可以预留一个或多个服务器计算机520,以用于执行对服务器计算机502和软件实例506的操作进行管理的软件组件。例如,服务器计算机520可以执行管理组件522。客户可以访问管理组件522以配置由客户购买的软件实例506的操作的各个方面。例如,客户可以购买、出租或租赁实例,并且对软件实例的配置进行更改。每个软件实例的配置信息可以作为机器映像(MI)542存储在网络附连存储器540上。具体地,MI 542描述用于启动VM实例的信息。MI可以包括用于实例的根卷的模板(例如,OS和应用),用于控制哪些客户账户可以使用MI的启动许可,和块设备映射,该块设备映射指定当启动实例时附连到实例的卷。MI也可以包括对可配置硬件映像(CHI)542的引用,其在当启动实例时加载到可配置硬件504上。CHI包括用于对可配置硬件504的至少一部分进行编程或配置的配置数据。
[0047] 客户也可以指定有关如何根据需求来缩放购买的实例的设置。管理组件还可以包括用于实现客户策略的策略文档。自动缩放组件524可以根据客户定义的规则来缩放实例506。在一个实施例中,自动缩放组件524允许客户指定用于确定何时应当实例化新实例的放大规则和用于确定何时应当终止现有实例的缩小规则。自动缩放组件524可以由在不同的服务器计算机502或其他计算设备上执行的许多子组件组成。自动缩放组件524可以监视内部管理网络上的可用计算资源,并且根据需要来修改可用的资源。
[0048] 部署组件526可以用于帮助客户部署计算资源的新实例506。部署组件可以访问与实例关联的账户信息,例如谁是账户的所有者、信用卡信息、所有者的国家等。部署组件526可以接收来自客户的配置,该配置包括描述了应当如何配置新实例506的数据。例如,该配置可以指定待被安装在新实例506中的一个或多个应用,提供为了配置新实例506而待被执行的脚本和/或其他类型的代码,提供指定应当如何准备应用缓存的缓存逻辑,以及提供其他类型的信息。部署组件526可以利用客户提供的配置和缓存逻辑来配置、准备好和启动新实例506。配置、缓存逻辑和其他信息可以由客户使用管理组件522或通过将该信息直接提供给部署组件526来指定。实例管理器可以被视为部署组件的一部分。
[0049] 客户账户信息528可以包括与多租户环境的客户关联的任何期望的信息。例如,客户账户信息可以包括客户的唯一标识符,客户地址,账单信息,许可信息,用于启动实例的定制参数,调度信息,自动缩放参数,用于访问账户的先前IP地址,可供客户访问的MI和CHI的列表,及诸如此类的。
[0050] 可以预留一个或多个服务器计算机530,以用于执行对配置数据到服务器计算机502的可配置硬件504的下载进行管理的软件组件。例如,服务器计算机530可以执行逻辑仓储服务,其包括摄取组件532、库管组件534和下载组件536。摄取组件532可以接收主机逻辑和应用逻辑设计或规范,并且生成可以用于配置可配置硬件504的配置数据。库管组件534可以用于管理与逻辑仓储服务关联的源代码、用户信息和配置数据。例如,库管组件534可以用于将由用户的设计生成的配置数据存储在网络附连存储器540上的由用户指定的位置中。特别地,配置数据可以被存储在网络附连存储器540上的可配置硬件映像542内。此外,库管组件534可以管理输入文件(例如,应用逻辑和主机逻辑的规范)的版本化和存储,以及关于逻辑设计和/或逻辑仓储服务的用户的元数据。库管组件534可以通过一个或多个属性来索引生成的配置数据,该属性例如是用户标识符、实例类型、市场标识符、机器映像标识符和可配置硬件标识符等。下载组件536可以用于认证对配置数据的请求,并且用于当请求被认证时将配置数据发送到请求者。例如,当启动使用可配置硬件504的实例506时,服务器计算机502A至B上的代理可以将请求发送到下载组件536。作为另一示例,当可配置硬件504处于操作中,实例506请求部分地重新配置可配置硬件504时,服务器计算机502A至B上的代理可以将请求发送到下载组件536。
[0051] 网络附连存储器(NAS)540可以用于提供存储空间和对存储在NAS 540上的文件的访问。例如,NAS 540可以包括用于使用诸如网络文件系统(NFS)等网络文件共享协议处理请求的一个或多个服务器计算机。NAS 540可以包括可移动或不可移动介质,其包括磁盘,存储区域网络(SAN),独立盘冗余阵列(RAID),磁带或录像带,CD-ROM,DVD,或可以用于以非临时方式存储信息且可以通过网络550而被访问的任何其他介质。
[0052] 网络550可以用于将服务器计算机502A至502B、服务器计算机520、530和存储器540进行互连。网络550可以是局域网(LAN),并且可以连接到广域网(WAN)560,使得终端用户可以访问计算服务提供者500。应理解,图5所示的网络拓扑已经简化,且更多的网络和网络连接设备可以用于互连这里公开的各种计算系统。
[0053] 图6是控制多租户环境中的可编程硬件的方法的流程图。在处理块610中,执行主机服务器计算机上的虚拟机实例。虚拟机可以是主机服务器计算机上的本地虚拟机。在其他实施例中,虚拟机可以位于单独主机服务器计算机上。在特定的示例中,单独主机服务器计算机上的虚拟机可以通过网络与可编程电路位于的主机服务器计算机上的管理用管理程序进行通信。
[0054] 在处理块620中,可以将可编程IC映射到虚拟机实例。例如,一个或多个主机IC可以位于虚拟机实例和可编程IC之间。例如,在图1中,主机逻辑IC 122可以位于多个可编程IC 120和虚拟机140之间,并且进行映射,以便将数据通信(例如,数据)从虚拟机路由到适当的可编程IC,反之亦然。
[0055] 在一些实施例中,可编程IC可以包括客户部和主机部。例如,在图3中,一些主机逻辑(即,主机逻辑包装器382和FPGA间传输380)被包括在客户FPGA中,以促进与主机FPGA的通信。客户FPGA 314、316可以与主机IC通信,以便访问共享外围设备362。主机IC可以包括用于确保每个客户可以访问与共享外围设备关联的资源(例如,带宽)的逻辑。同样,主机IC可以确保每个客户都有足够的权限访问PCIe端点。
[0056] 图7是根据另一实施例的控制多租户环境中的可编程硬件的方法的流程图。在处理块710中,将多个可编程IC提供到主机服务器计算机上。例如,在图1中,可编程IC 150被示意为包括任何期望数量的IC。可编程IC通常是FPGA,但是可以使用其他可编程IC。可编程IC允许编程以形成逻辑门和其他硬件逻辑。在处理块720中,启动主机服务器计算机上的多个虚拟机。再次,返回图1,可以启动主机服务器计算机上的任何数量的虚拟机140。在处理块730中,将主机IC位于多个虚拟机和可编程IC之间。主机IC可以包括映射逻辑(例如,参见图2的264)和管理逻辑(例如,参见图2的266)。主机IC也包括用于与虚拟机和可编程IC分别通信的上游和下游接口。在处理块740中,可以将多个虚拟机映射到可编程IC。通过中间主机IC进行映射,该中间主机IC包括与可编程IC和虚拟机关联的适当地址范围。多个可编程IC可以与不同的客户关联,且主机IC可以进行用于确保使可编程IC沙箱化的管理功能。因此,与一个客户关联的可编程IC关联的任何数据不能由另外的客户获得。在一些实施例中,主机IC和可编程IC之间的通信可以通过串行通信端口(例如Serdes端口)来发生。可以使用其他FPGA间传输接口。在一些实施例中,主机IC可以包括用于与客户FPGA上的端点(参见图4的440)进行通信的根联合体(参见图4的430)。
[0057] 图8描述了可以实现上述创新的合适计算环境800的一般化示例。计算环境800不是为了对使用范围或功能提出任何限制,因为创新可以在不同的通用或专用计算系统中实现。例如,计算环境800可以是各种计算设备中的任一者(例如,台式计算机、膝上计算机、服务器计算机、平板计算机等)。
[0058] 参照图8,计算环境800包括一个或多个处理单元810、815和存储器820、825。在图8中,该基本配置830包括在虚线内。处理单元810、815执行计算机可执行指令。处理单元可以是通用中央处理单元(CPU),专用集成电路(ASIC)中的处理,或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令来增加处理能力。例如,图8示意了中央处理单元810以及图形处理单元或协作处理单元815。有形存储器820、825可以是可由处理单元访问的易失性存储器(例如,寄存器、缓存、RAM)、非易失性存储器(例如,ROM,EEPROM,闪存等)或两者的某种组合。存储器820、825以适合于处理单元执行的计算机可执行指令的形式存储实现这里所述的一个或多个创新的软件880。
[0059] 计算系统可以具有额外的特征。例如,计算环境800包括存储器840,一个或多个输入设备850,一个或多个输出设备860,和一个或多个通信连接870。诸如总线、控制器或网络等互连机制(未示出)将计算环境800的组件进行互连。通常,操作系统软件(未示出)为在计算环境800中执行的其他软件提供操作环境,并且协调计算环境800的组件的活动。计算系统也可以包括一个或多个插件板872,该插件板872包括这里所述的可编程IC。
[0060] 有形存储器840可以是可移动或不可移动的,并且包括磁盘,磁带或录像带,CD-ROM,DVD,或可以用于以非临时方式存储信息且可以在计算环境800内被访问的任何其他介质。存储器840存储用于软件880的指令,该软件880实现这里所述的一个或多个创新。
[0061] 输入设备850可以是触摸输入设备(例如,键盘鼠标、笔或轨迹球)、声音输入设备、扫描设备或将输入提供给计算环境800的其他设备。输出设备860可以是显示器、打印机、扬声器、CD刻录机或从计算环境800提供输出的其他设备。
[0062] 通信连接870能够通过通信介质与另一计算实体进行通信。通信介质传送调制的数据信号中的信息,例如计算机可执行指令,音频或视频输入或输出,或其他数据。调制的数据信号是以对信号中的信息进行编码的方式来使其特征中的一个或多个特征被设置或被改变了的信号。作为示例而非限制,通信介质可以使用电、光、RF或其他载体。
[0063] 图9是示意了包括主机服务器计算机902的示例性计算系统900的系统图,该主机服务器计算机902具有由虚线908粗略分开的软件部904和硬件部906。硬件部906包括通常被示意为其他硬件910的一个或多个CPU、存储器、存储设备等。硬件部906还可以包括通常以920示出的可编程集成电路(IC)。可编程IC可以是FPGA或其他类型的可编程逻辑,例如复杂可编程逻辑器件(CPLD)。如下面进一步所述,可以在主机服务器计算机902中使用任何数量的可编程IC 920。此外,可编程IC 920可以包括来自不同客户的逻辑,使得多个客户在不知道彼此存在的情况下在同一服务器计算机902上操作。
[0064] 硬件部906还包括两个或以上中间主机逻辑IC 922、923,该中间主机逻辑IC 922、923执行可编程IC 920和软件部904之间的管理、安全和映射功能。主机逻辑IC也可以是可重新编程逻辑,例如FPGA,或也可以是其他不可重新编程硬件,例如ASIC或SoC。
[0065] 在软件部904中对硬件906上方的层进行运行的是管理程序或内核层,在本示例中被示意为包括管理用管理程序930。管理用管理程序930通常可以包括访问硬件906所需的设备驱动器。软件部904可以包括通常以940示出的用于运行虚拟机的多个分区。分区是管理程序隔离的逻辑单元,并且执行虚拟机。每个分区可以分配其自己的硬件层的内存部分、CPU分配、存储等。此外,每个分区可以包括虚拟机和自己的客户操作系统。每个虚拟机940可以通过硬件接口(未示出,但是在下面进一步说明)与主机逻辑IC 922、923中的一者进行通信。主机逻辑IC 922、923可以将通信映射到适当的可编程IC 920,使得可编程IC 920认为它们与虚拟机940直接通信。在一些实施例中,主机逻辑950的薄层可以被包括在与客户关联的可编程IC 920中。映射通过地址映射来完成,其中,逻辑和物理地址可以存储在主机IC中,以便彼此链接。
[0066] 尽管示出了两个主机逻辑IC 922、923,但是可以使用任何数量的主机逻辑IC。此外,尽管将主机逻辑IC示意为在主机服务器计算机902内,但是在这里所述的任一实施例中,一个或多个主机逻辑IC可以位于主机服务器计算机902的外部。在这种情况下,可编程IC 920也可以在主机服务器计算机902的外部。
[0067] 尽管为了方便呈现,以特定的顺序次序说明了公开的一些方法的操作,但是应理解,该说明方式涵盖重新布置,除非下面阐述的特定语言要求特定的排序。例如,在一些情况下,顺序说明的操作可以重新布置或同时执行。此外,为了简单起见,附图可能未示意所公开的方法可以与其他方法结合使用的各种方式。
[0068] 公开的任一方法可以实现为存储在一个或多个计算机可读存储介质(例如,一个或多个光介质盘,易失性存储组件(例如,DRAM或SRAM)或非易失性存储组件(例如,闪存或硬盘驱动器))上且在计算机(例如,任何商用计算机,其包括:智能手机或具有计算硬件的其他移动设备)上执行的计算机可执行指令。术语计算机可读存储介质不包括通信连接,例如信号和载波。用于实现公开的技术的任何计算机可执行指令以及在实现公开的实施例的期间创建和使用的任何数据可以存储在一个或多个计算机可读存储介质上。计算机可执行指令例如可以是专用软件应用或经由网页浏览器或其他软件应用(例如,远程计算应用)可访问或可下载的软件应用的一部分。该软件例如可以在单个本地计算机(例如,任何合适的商用计算机)上或在使用一个或多个网络计算机的网络环境(例如,经由因特网,广域网,局域网,客户端服务器网络(例如,云计算网络),或其他类似网络)中执行。
[0069] 为了清楚起见,仅说明了基于软件的实现方式的某些选定方面。省略了本领域公知的其他细节。例如,应理解,公开的技术不限于任何特定计算机语言或程序。例如,公开的技术可以通过以C++、Java、Perl、JavaScript、Adobe Flash或任何其他合适的编程语言编写的软件来实现。同样,公开的技术不限于任何特殊的计算机或硬件类型。合适的计算机和硬件的某些细节是公知的,并且不需要在本文中详细阐述。
[0070] 也应很好理解,这里所述的任何功能可以至少部分地由一个或多个硬件逻辑组件而不是软件来执行。例如但是不限于,可以使用的硬件逻辑组件的说明性的类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。这些器件中的任何一个可以用于这里所述的实施例。
[0071] 此外,可以通过合适的通信方式上传、下载或远程访问任何基于软件的实施例(例如,包括用于使计算机执行所公开的任何方法的计算机可执行指令)。该合适的通信方式例如包括因特网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信或其他类似通信方式。
[0072] 可以根据以下条款说明本发明的实施例:
[0073] 1.一种多租户环境中的装置,所述装置包括:
[0074] 主机服务器计算机,所述主机服务器计算机具有被配置为执行管理用管理程序和至少第一和第二虚拟机实例的处理器;
[0075] 位于所述主机服务器计算机内的第一可编程集成电路IC,所述第一可编程集成电路可编程以包括与所述第一虚拟机实例关联的硬件逻辑;
[0076] 位于所述主机服务器计算机内的第二可编程IC,所述第二可编程集成电路可编程以包括与所述第二虚拟机实例关联的硬件逻辑;和
[0077] 位于所述第一虚拟机实例和所述第一可编程IC之间且位于所述第二虚拟机实例和所述第二可编程IC之间的主机IC,所述主机IC将所述第一可编程IC映射到所述第一虚拟机实例且将所述第二可编程IC映射到所述第二虚拟机实例。
[0078] 2.如条款1所述的装置,其中,所述主机IC包括用于与所述第一和所述第二虚拟机实例进行通信的接口端点,和用于与所述第一和所述第二可编程IC进行通信的接口。
[0079] 3.如前述任一条款所述的装置,其中,所述主机IC包括用于将所述第一虚拟机实例与所述第一可编程IC或所述第二可编程IC进行关联的映射逻辑。
[0080] 4.如前述任一条款所述的装置,其中,所述第一和所述第二可编程IC中每个在其内均具有被编程的沙箱硬件逻辑。
[0081] 5.如前述任一条款所述的装置,其中,所述主机IC包括共享外围设备,且其中,所述主机IC控制所述第一和所述第二可编程IC中每个均能够使用的资源量。
[0082] 6.如前述任一条款所述的装置,其中,所述主机IC包括路由逻辑,且所述第一和所述第二可编程IC包括用于与所述主机IC进行通信的接口端点。
[0083] 7.一种控制多租户环境中的可编程硬件的方法,所述方法包括:
[0084] 执行所述多租户环境中的主机服务器计算机上的虚拟机实例,所述主机服务器计算机包括多个可编程集成电路IC;和
[0085] 使用位于所述虚拟机实例和所述多个可编程IC之间的一个或多个主机IC将所述多个可编程IC中的第一可编程IC映射到所述虚拟机实例。
[0086] 8.如条款7所述的方法,其中,所述主机IC具有用于与所述虚拟机实例进行通信的接口端点,和用于与所述第一可编程IC内的端点进行通信的路由逻辑。
[0087] 9.如条款7或8所述的方法,其中,所述第一可编程IC包括主机部和与所述虚拟机实例关联的部分,所述主机部包括用于与所述主机IC进行通信的接口。
[0088] 10.如条款7至9中任一项所述的方法,其中,所述主机IC包括具有串行端口的共享外围设备。
[0089] 11.如条款7至10中任一项所述的方法,其中,所述主机服务器计算机包括管理用管理程序,且所述方法还包括:使用所述管理用管理程序启动所述虚拟机实例,并且配置所述一个或多个主机IC。
[0090] 12.如条款7至11中任一项所述的方法,其中,所述多个可编程IC是现场可编程门阵列FPGA。
[0091] 13.如条款7至12中任一项所述的方法,其中,所述主机IC是现场可编程门阵列FPGA。
[0092] 14.如条款7至14中任一项所述的方法,其中,所述多个可编程IC通过外围总线耦接到所述主机IC。
[0093] 15.一种方法,其包括:
[0094] 将多个可编程集成电路IC提供到主机服务器计算机上;
[0095] 启动所述主机服务器计算机上的多个虚拟机;
[0096] 提供位于所述多个虚拟机和所述多个可编程IC之间的主机IC;和
[0097] 将所述多个虚拟机映射到所述多个可编程IC。
[0098] 16.如条款15所述的方法,其中,所述主机IC包括共享资源,且所述主机IC将与所述共享资源关联的资源分配给所述多个可编程IC。
[0099] 17.如条款15或16所述的方法,其中,在所述多个可编程IC之间阻止通信。
[0100] 18.如条款15至17中任一项所述的方法,其中,所述主机IC是现场可编程门阵列或片上系统SoC。
[0101] 19.如条款15至18中任一项所述的方法,其中,所述主机IC通过串行端口与所述多个可编程IC进行通信。
[0102] 20.如条款15至20中任一项所述的方法,其中,所述主机IC包括用于与所述多个虚拟机进行通信的端点和用于与所述多个可编程IC进行通信的根联合体。
[0103] 所公开的方法、装置和系统不应被理解为以任何方式进行限制。相反,本发明针对公开的以单独方式和以彼此之间各种组合和次组合方式的各种实施例的所有新颖和非显而易见的特征和方面。所公开的方法、装置和系统不限于任何特定的方面或特征或它们的组合,所公开的实施例也不要求存在任何一个或多个特定优势或解决任何一个或多个特定问题。
[0104] 鉴于可以应用所公开的发明原理的许多可能的实施例,应认识到,所述的实施例仅是本发明的优选示例,且不应被视为限制本发明的范围。相反,本发明的范围由随附的权利要求限定。因此,申请人主张该权利要求范围内的所有发明都作为申请人的发明。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈