首页 / 专利库 / 电子零件及设备 / 可编程逻辑器件 / 现场可编程门阵列 / 支持可适应性主机逻辑的逻辑仓储服务

支持可适应性主机逻辑的逻辑仓储服务

阅读:198发布:2020-05-11

专利汇可以提供支持可适应性主机逻辑的逻辑仓储服务专利检索,专利查询,专利分析的服务。并且以下描述涉及一种支持可适应性主机逻辑的逻辑仓储服务。在一个实例中,一种进行逻辑仓储服务的方法可以包括接收使用应用逻辑的规范产生用于可配置 硬件 的配置数据的第一 请求 。所述方法可以包括从一组主机逻辑壳中选择特定的主机逻辑壳。在配置所述可配置硬件时,可以使用所述特定的主机逻辑壳来封装所述应用逻辑。可以产生用于所述可配置硬件的配置数据。所述配置数据可以包括用于实施所述应用逻辑以及所述特定的主机逻辑壳的至少一部分的数据。所述方法可以包括接收将所述配置数据下载到包括所述可配置硬件的主机 服务器 计算机的第二请求。可以响应于所述第二请求而将所述配置数据传输到所述主机服务器计算机。,下面是支持可适应性主机逻辑的逻辑仓储服务专利的具体信息内容。

1.一种逻辑仓储服务,所述逻辑仓储服务包括:
用于摄入应用逻辑设计的规范以及从多个主机逻辑壳中选择特定的主机逻辑壳的装置,所述特定的主机逻辑壳是基于所述应用逻辑设计而选择,当在可配置硬件的实例上配置所述应用逻辑设计和所述特定的主机逻辑壳时,所述特定的主机逻辑壳封装所述应用逻辑设计;
用于基于所述应用逻辑设计和所述特定的主机逻辑壳来产生配置数据的装置;以及用于响应于对所述配置数据的请求而经由网络将所述配置数据传输到服务器计算机的装置,所述服务器计算机包括所述可配置硬件的通过所述配置数据编程的所述实例。
2.如权利要求1所述的逻辑仓储服务,其中所述特定的主机逻辑壳包括静态逻辑和可重配置逻辑。
3.如权利要求2所述的逻辑仓储服务,其中所述特定的主机逻辑壳的所述静态逻辑包括是用于将所述特定的主机逻辑壳的所述可重配置逻辑以及所述应用逻辑载入到所述可配置硬件上的必备条件的逻辑。
4.如权利要求3所述的逻辑仓储服务,其中所述特定的主机逻辑壳的所述静态逻辑包括用于与所述服务器计算机通信的主机接口逻辑。
5.如权利要求2至4中任一项所述的逻辑仓储服务,其中所述特定的主机逻辑壳的所述静态逻辑使用所述多个主机逻辑壳共同的设计。
6.如权利要求2至5中任一项所述的逻辑仓储服务,其中所述配置数据包括对用于所述应用逻辑的配置数据进行编码的第一部分位流以及对用于所述特定的主机逻辑壳的所述可重配置逻辑的配置数据进行编码的第二部分位流。
7.如权利要求1至6中任一项所述的逻辑仓储服务,其中所述多个主机逻辑壳包括第一主机逻辑壳和第二主机逻辑壳,所述第一主机逻辑壳包括用于访问外围设备的逻辑,而所述第二主机逻辑壳不包括用于访问所述外围设备的所述逻辑。
8.如权利要求1至7中任一项所述的逻辑仓储服务,其中用于产生所述配置数据的所述装置包括逻辑综合软件
9.如权利要求1至8中任一项所述的逻辑仓储服务,其中在配置所述可配置硬件的所述实例时封装所述应用逻辑包括阻止所述应用逻辑直接访问所述可配置硬件的所述实例的物理接脚。
10.一种计算系统,所述计算系统包括:
数据库,所述数据库存储多个主机逻辑设计;以及
逻辑仓储服务,所述逻辑仓储服务在联接到所述数据库的第一服务器计算机上运行,所述逻辑仓储服务被配置成:
摄入应用逻辑设计的规范;
从所述多个主机逻辑设计中选择特定的主机逻辑设计,所述特定的主机逻辑设计是基于所述应用逻辑设计而选择;
产生用于可配置硬件的配置数据,所述配置数据是基于所述应用逻辑设计和所述特定的主机逻辑设计;
接收来自第二服务器计算机的对所述配置数据的请求;以及
将所述配置数据传输到所述第二服务器计算机,所述第二服务器计算机包括所述可配置硬件的实例。
11.如权利要求10所述的计算系统,其中所述特定的主机逻辑设计包括静态逻辑,所述静态逻辑是基于所述应用逻辑设计和所述特定的主机逻辑设计而在与所述配置数据不同的时间载入到所述可配置硬件的所述实例上。
12.如权利要求10或11所述的计算系统,其中所述特定的主机逻辑设计的所述静态逻辑包括用于与所述第二服务器计算机通信的主机接口逻辑。
13.如权利要求10至12中任一项所述的计算系统,其中所述特定的主机逻辑设计包括可重配置逻辑设计和静态逻辑设计,并且其中传输到所述第二服务器计算机的所述配置数据包括用于所述可重配置逻辑设计的配置数据并且不包括用于所述静态逻辑设计的配置数据,所述静态逻辑设计是从与所述可配置硬件的所述实例通信的存储器载入到所述可配置硬件的所述实例上。
14.如权利要求10至13中任一项所述的计算系统,其中所述多个主机逻辑设计包括第一主机逻辑和第二主机逻辑,所述第一主机逻辑包括直接存储器访问(DMA)引擎,而所述第二主机逻辑设计不包括所述DMA引擎。
15.一种提供可配置硬件的方法,所述方法包括:
接收产生用于现场可编程阵列(FPGA)的配置数据的第一请求,所述第一请求包括对指定用于在所述FPGA上实施的应用逻辑的硬件设计的参考;
从多个主机逻辑壳中选择特定的主机逻辑壳,所述特定的主机逻辑壳在配置所述FPGA时封装所述应用逻辑;
基于所述应用逻辑和所述特定的主机逻辑壳来产生经验证的FPGA配置数据;
接收将所述经验证的FPGA配置数据下载到计算环境的主机服务器计算机的第二请求,所述主机服务器计算机包括特定FPGA;以及
响应于所述第二请求而将所述经验证的FPGA配置数据传输到所述主机服务器计算机,使得所述特定的FPGA被配置有所述特定的主机逻辑壳和所述应用逻辑。

说明书全文

支持可适应性主机逻辑的逻辑仓储服务

背景技术

[0001] 计算是在远程位置可用并且可经由网络(诸如因特网)访问的计算资源(硬件软件)的使用。在一些布置中,用户能够按需要购买这些计算资源(包括存储和计算能)作为实用程序。云计算将用户的数据、软件和计算委托给远程服务。虚拟计算资源的使用可以提供许多优点,包括成本优点和/或快速地适应变动的计算资源需要的能力。
[0002] 大型计算机系统的用户可能具有由不同使用案例产生的各种计算要求。计算服务提供者可以包括具有不同类型的组件的各种不同的计算机系统,所述组件具有不同等级的性能和/或功能性。因此,用户可以选择在执行特定任务时可能潜在地更有效的计算机系统。举例来说,计算服务提供者可以提供具有处理性能、存储器性能、存储容量或性能和网络容量或性能的不同组合的系统。然而,一些用户可能希望使用专用或高度专业化的硬件来执行其计算任务。因此,计算服务提供者为这些用户提供专业计算硬件同时保持一般化资源的良好混合使得可以在不同用户中有效地分配所述资源可能是有挑战性的。附图说明
[0003] 图1是展示包括用于管理配置数据的逻辑仓储服务的系统的实例的系统图。
[0004] 图2是展示包括主机逻辑壳和应用逻辑的可配置逻辑平台的实例的系统图。
[0005] 图3是展示包括主机逻辑壳和应用逻辑的可配置逻辑平台的特定实现方式的实例的系统图。
[0006] 图4是展示逻辑仓储服务的示例性架构的系统图。
[0007] 图5示出可以由逻辑仓储服务执行的配置数据的摄入和产生的实例。
[0008] 图6是展示在包括逻辑仓储服务的多租户环境中运行的多个虚拟机实例的一个实例的系统图。
[0009] 图7展示包括用于配置可配置硬件平台并与所述可配置硬件平台介接的控制平面和数据平面的组件的、图6的示例性系统的其他细节。
[0010] 图8是示出在包括逻辑仓储服务的多租户环境中运行的多个虚拟机实例的另一个实例的系统图。
[0011] 图9是管理用于在多租户环境中配置可配置硬件的配置数据的示例性方法的流程图
[0012] 图10是管理用于在多租户环境中配置可配置硬件的配置数据的示例性方法的流程图。
[0013] 图11是用于对可编程逻辑平台进行编程的过程的示例性方法的流程图。
[0014] 图12绘示可以在其中实施所描述的创新的合适的计算环境的一般化实例。

具体实施方式

[0015] 概述
[0016] 用于在一组可再用通用计算资源内提供专业计算资源的一种解决方案是在所述通用计算资源中提供包括可配置逻辑平台(也被称作可配置硬件平台和可编程逻辑平台)的服务器计算机作为选择。作为特定实例,该组可再用通用计算资源可以包括服务器计算机,所述服务器计算机具有包括现场可编程阵列(FPGA)的附加卡。可配置逻辑(也被称作可配置硬件)是可以被编程或被配置成执行逻辑功能的硬件,所述逻辑功能由应用于所述可配置逻辑的配置数据指定。举例来说,所述计算资源的用户可以提供用于配置所述可配置逻辑的规范(诸如用硬件描述语言或其他语言编写的源代码),可以根据所述规范来配置所述可配置逻辑,并且可以使用经配置的逻辑来为用户执行任务。然而,允许用户访问计算设施的低级硬件可能会潜在地在计算设施内引入安全和隐私问题。作为特定实例,如果经配置的逻辑致使计算设施内的一个或多个服务器计算机出现故障(例如,崩溃、挂机或重新启动)或成为被拒绝的网络服务,那么来自一个用户的有缺点或恶意的设计可能会潜在地导致对其他用户拒绝服务。作为另一个特定实例,如果经配置的逻辑能够对其他用户的存储器空间的存储器进行读取和/或写入,那么来自一个用户的有缺点或恶意的设计可能会潜在地损坏或从另一个用户读取数据。作为另一个特定实例,如果经配置的逻辑包括导致所述装置超过可配置逻辑平台的功率消耗或温度规范的电路(诸如环形振荡器),那么来自用户的有缺点或恶意的设计可能会潜在地导致可配置逻辑平台出现故障。
[0017] 如本文中所描述,计算服务设施可以包括各种计算资源,其中所述计算资源中的一类计算资源可以包括服务器计算机,所述服务器计算机包括可配置逻辑平台。所述可配置逻辑平台可以由所述计算机系统的用户编程或配置,使得所述计算资源的硬件(例如,可配置逻辑)由所述用户定制。举例来说,所述用户可以对可配置逻辑进行编程,使得所述可配置逻辑用作紧密地联接到所述服务器计算机的硬件加速器。举例来说,所述硬件加速器可以是可经由服务器计算机的本地互连(诸如快速外围组件互连(PCI-快速或PCIe))访问。用户可以在服务器计算机上执行应用程序,并且所述应用程序的任务可以通过所述硬件加速器使用PCIe事务来执行。通过将硬件加速器紧密地联接到服务器计算机,可以减少加速器与服务器计算机之间的延迟,这样可以潜在地提高所述应用程序的处理速度。
[0018] 计算服务提供者可以使用软件服务来管理计算资源以管理可配置硬件的配置和操作。作为一个实例,计算服务提供者可以执行逻辑仓储服务,以摄入用户的硬件或逻辑设计、基于所述用户的逻辑设计来产生用于配置所述可配置逻辑平台的经验证的配置数据以及响应于对配置所述可配置逻辑平台的实例的请求而将所述经验证的配置数据下载到所述可配置逻辑。所述下载请求可以来自开发逻辑设计的用户或来自已获取使用所述逻辑设计的许可的用户。因此,逻辑设计可以由计算服务提供者、用户或与所述用户或所述计算服务提供者分离的第三方创建。举例来说,可以向计算服务提供者的用户提供加速器知识产权(IP)的市场,并且所述用户可以潜在地通过从所述市场选择加速器来提高其应用程序的速度。
[0019] 计算服务提供者可以潜在地通过使用逻辑仓储服务来验证逻辑设计符合所述计算服务提供者的要求来增加计算资源的安全性和/或可用性。举例来说,所述逻辑仓储服务可以检查用户创建的逻辑设计(也被称作顾客逻辑或应用逻辑)被由计算服务提供者提供的特定主机逻辑设计(也被称作主机逻辑壳)封装。在配置可配置逻辑平台时,主机逻辑与应用逻辑均可以载入到可配置逻辑平台上。主机逻辑可以提供框架或沙盒以便应用逻辑在内工作。明确地说,主机逻辑可以与应用逻辑通信并且约束应用逻辑的功能性以潜在地增加计算资源的安全性和/或可用性。举例来说,主机逻辑可以在本地互连(例如,PCIe互连)与应用逻辑之间执行桥接功能,使得应用逻辑无法直接控制本地互连上的信令。主机逻辑可以负责在本地互连上形成封包或总线事务并且确保满足协议要求。通过控制本地互连上的事务,主机逻辑可以潜在地防止格式错误的事务或界外位置的事务。
[0020] 可配置逻辑平台包括可以进行编程的固定量的资源。因此,将资源用于应用逻辑与将资源用于主机逻辑之间可能存在取舍。用于执行应用逻辑的功能的资源会随着应用逻辑变得更复杂而增加。类似地,用于执行主机逻辑的功能的资源会随着主机逻辑变得更复杂而增加。计算服务提供者可以提供具有各种特征(以及使用不同量的资源)的主机逻辑设计的库或目录,所述特征可以与应用逻辑介接。每个主机逻辑设计可以是受计算服务提供者信任以与可配置逻辑内的组件和/或与可配置逻辑介接的组件正确地互操作的设计。作为一个实例,用户可以从主机逻辑设计的库中选择主机逻辑设计中的一者,其中基于应用逻辑的要求来修改所选的主机逻辑设计。具体地说,用户可以在应用逻辑不那么复杂时选择具备较多特征的主机逻辑设计(消耗更多资源),并且用户可以在应用逻辑较复杂时选择具备较少特征的主机逻辑设计(消耗较少资源)。作为另一个实例,基于网络的服务可以通过分析应用逻辑(诸如通过分析用于实施应用逻辑的资源的量)来从主机逻辑设计的库中选择主机逻辑设计中的一者。举例来说,不同的主机逻辑设计可以具有不同的外围设备和/或加速器,并且所选的主机逻辑设计可以具有适合于应用逻辑的外围设备和加速器的组合。通过具有可适应性主机逻辑设计的库,可以在应用逻辑和主机逻辑内对可配置逻辑资源进行取舍。
[0021] 图1是展示包括用于管理配置数据的逻辑仓储服务110的系统100的实例的系统图,所述配置数据可以用于配置计算资源120内的可配置资源。明确地说,逻辑仓储服务110可以用于将主机和应用逻辑摄入到计算服务提供者的基础设施内、基于所摄入的设计来产生可配置设计、维护所摄入的设计和所产生的配置数据的仓储以及在部署可配置计算资源时提供用于所述资源的配置数据。
[0022] 逻辑仓储服务110可以是网络可访问的服务,诸如网络服务。网络服务通常在云计算中使用。网络服务是在网络地址处通过网络(诸如因特网(可能但不一定使用万维网))提供的软件功能。客户端向服务器发出网络服务请求,并且服务器处理所述请求并返回适当的响应。客户端网络服务请求通常是使用(例如)API请求来发出。为简单起见,网络服务请求在下文中大体上将被描述为API请求,但应理解,可以进行其他网络服务请求。API请求是通常用JSON或XML表达的与经限定的请求-响应消息系统的程序接口,所述程序接口经由网络(通常借助于基于HTTP的网络服务器)来显露。因此,在某些实现方式中,API可以被定义为一组超文本传输协议(HTTP)请求接口以及用于调用所述API的消息与响应消息的结构的定义,所述API可以采取可扩展标记语言(XML)或JavaScript对象标记(JSON)格式。所述API可以指定执行动作的一组函数或例程,所述动作包括完成特定任务或允许与软件组件交互。当网络服务从客户端装置接收API请求时,网络服务可以产生对所述请求的响应并将所述响应发送到在所述请求中识别出的端点。另外地或可选地,网络服务可以响应于API请求而执行动作,但不会产生传到在所述请求中识别出的端点的响应。
[0023] 逻辑仓储服务110可以接收API请求130以产生用于可配置硬件平台(诸如服务器计算机140的可配置硬件142)的配置数据。举例来说,API请求130可以由计算服务提供者的开发者或合作伙伴用户发出。请求130可以包括用于说明关于逻辑设计、可配置硬件平台、用户信息、访问权限、生产状态的数据和/或元数据的字段,以及用于描述关于逻辑仓储服务110的输入、输出和用户的信息的各种额外字段。作为特定实例,所述请求可以包括对以下各者的描述:设计、生产状态(诸如试验或生产)、服务的输入或输出的加密状态、对用于存储输入文件(诸如硬件设计源代码)的位置的参考、输入文件的类型、可配置硬件的实例类型以及对用于存储输出文件或报告的位置的参考。明确地说,所述请求可以包括对说明用于在可配置硬件平台上实施的应用逻辑132的硬件设计的参考。具体地说,应用逻辑132和/或主机逻辑134的规范可以是文件的集合,诸如源代码、由逻辑综合工具产生的网表和/或由放置和布线工具产生的经放置和经布线的逻辑门。所述源代码可以包括用硬件描述语言(HDL)、寄存器传送逻辑(RTL)语言或高级语言(诸如开放式计算语言(开放CL)或C)来编写的代码。
[0024] 计算资源120可以包括按实例类型分类的许多不同类型的硬件和软件。明确地说,实例类型指定资源的硬件和软件的至少一部分。举例来说,硬件资源可以包括具有不同性能等级(例如,不同的时钟速度、架构、高速缓存大小等)的中央处理单元(CPU)的服务器、具有和不具有协同处理器(诸如图形处理单元(GPU)和可配置逻辑)的服务器、具有不同容量和性能的存储器和/或本地存储装置的服务器以及具有不同的网络性能等级的服务器。示例性软件资源可以包括不同的操作系统、应用程序和驱动器。一个示例性实例类型可以包括服务器计算机140,所述服务器计算机包括与可配置硬件142通信的中央处理单元(CPU)144。可配置硬件142可以包括可编程逻辑,诸如,例如,FPGA、可编程逻辑阵列(PLA)、可编程阵列逻辑(PAL)、通用阵列逻辑(GAL)或复杂可编程逻辑装置(CPLD)。作为特定实例,“F1.小”实例类型可以包括具有一个容量单位的FPGA资源的第一类服务器计算机,“F1.中”实例类型可以包括具有两个容量单位的FPGA资源的第一类服务器计算机,“F1.大”实例类型可以包括具有八个容量单位的FPGA资源的第一类服务器计算机,并且“F2.大”实例类型可以包括具有八个容量单位的FPGA资源的第二类服务器计算机。
[0025] 逻辑仓储服务110可以响应于接收到API请求130而产生配置数据136。所产生的配置数据136可以是基于应用逻辑132和从主机逻辑库135中选择的特定主机逻辑设计134。主机逻辑库135可以包括多个主机逻辑设计。举例来说,不同的主机逻辑设计可以包括不同数目的芯片上外围设备、芯片外外围设备和/或加速器。用户可以基于应用逻辑132的特征来选择特定的主机逻辑设计134。举例来说,大且复杂的应用逻辑设计132可以使用可配置逻辑的相对较大量的资源,并且因此可以使用较小的、特征减少的主机逻辑设计,使得应用逻辑设计132与主机逻辑设计134可以适合于可配置硬件142的能力。作为另一个实例较小的应用逻辑设计132可以将一些功能转移到主机逻辑设计134的加速器上。因此,可以基于应用逻辑设计132来修改特定的主机逻辑设计134,从而为用户提供更多灵活性,同时仍为计算服务提供者提供安全性和可用性。
[0026] 所产生的配置数据136可以包括可以用于对可配置硬件142进行编程或配置使得所述可配置硬件执行由应用逻辑132和主机逻辑134指定的功能的信息。作为一个实例,计算服务提供者可以产生主机逻辑134,所述主机逻辑包括用于在CPU 144与可配置硬件142之间介接的逻辑。具体地说,主机逻辑134可以包括用于掩盖或遮蔽应用逻辑132使之不会与CPU 144直接通信使得所有CPU-应用逻辑事务都要通过主机逻辑134进行的逻辑。以此方式,主机逻辑134可以潜在地降低可能会由应用逻辑132引入的安全性和可用性险。
[0027] 产生配置数据136可以包括对应用逻辑132执行检查和/或测试、将应用逻辑132集成到主机逻辑134包装中、综合应用逻辑132和/或对应用逻辑132进行放置和布线。检查应用逻辑132可以包括核实应用逻辑132符合计算服务提供者的一个或多个标准。举例来说,可以分析应用逻辑132以确定是否存在用于与主机逻辑134介接的接口信号和/或逻辑功能。明确地说,所述分析可以包括对照一组核实测试来分析源代码和/或运行应用逻辑132。所述核实测试可以用于确认应用逻辑与主机逻辑兼容。作为另一个实例,可以分析应用逻辑132以确定应用逻辑132是否适合于指定实例类型的选定的区。作为另一个实例,可以分析应用逻辑132以确定应用逻辑132是否包括任何禁止的逻辑功能,诸如环形振荡器或其他可能有害的电路。作为另一个实例,可以分析应用逻辑132以确定应用逻辑132是否具有与主机逻辑134的任何命名冲突或与主机逻辑134不介接的任何无关输出。作为另一个实例,可以分析应用逻辑132以确定应用逻辑132是否试图与可配置硬件142的受限制的输入、输出或硬宏介接。如果应用逻辑132通过了逻辑仓储服务110的检查,那么可以产生配置数据
136。如果所述检查或测试中的任一者失败,那么配置数据136的产生可能会中止。
[0028] 产生配置数据136可以包括将应用逻辑132和主机逻辑134的源代码编译和/或转译成可以用于对可配置硬件142进行编程或配置的数据。举例来说,逻辑仓储服务110可以将应用逻辑132集成到主机逻辑134包装中。具体地说,应用逻辑132可以在包括应用逻辑132和主机逻辑134的系统设计中实例化。可以使用逻辑综合程序来综合集成的系统设计以创建所述系统设计的网表。可以针对为所述系统设计指定的实例类型使用放置和布线程序来对所述网表进行放置和布线。可以将放置和布线后的设计转换成可以用于对可配置硬件
142进行编程的配置数据136。举例来说,配置数据136可以直接从放置和布线程序输出。
[0029] 作为一个实例,所产生的配置数据136可以包括用于配置FPGA的全部或一部分的可配置逻辑的完整或部分的位流。FPGA可以包括可配置逻辑和不可配置逻辑。所述可配置逻辑可以包括以下各者:包括组合逻辑和/或查找表(LUT)和顺序逻辑元件(诸如触发器和/或存器)的可编程逻辑、可编程路由和时钟资源、可编程分布式和块型随机存取存储器(RAM)、数字信号处理(DSP)位片以及可编程输入/输出接脚。可以使用配置逻辑(例如,配置访问端口)将位流载入到可配置逻辑的芯片上存储器中。可以使用载入到芯片上存储器内的值来控制可配置逻辑,使得可配置逻辑执行由所述位流指定的逻辑功能。另外,可配置逻辑可以划分到可以彼此独立地配置的不同区中。作为一个实例,可以使用整个位流来配置所有所述区内的可配置逻辑,并且可以使用部分位流来仅配置所述可配置逻辑区的一部分。不可配置逻辑可以包括在FPGA内执行特定功能的硬宏,诸如输入/输出块(例如,串行化器和解串行化器(SERDES)块和兆位收发器)、模/数转换器、存储器控制块、测试访问端口以及用于将配置数据载入到可配置逻辑上的配置逻辑。
[0030] 逻辑仓储服务110可以将所产生的配置数据136存储于逻辑仓储数据库150中。逻辑仓储数据库150可以存储在可移动或不可移动的介质上,所述可移动或不可移动的介质包括磁盘、直连存储、网络附加存储(NAS)、存储区域网络(SAN)、独立冗余磁盘阵列(RAID)、磁带或磁带盒、CD-ROM、DVD或可以用于以非暂时方式存储信息并且可以由逻辑仓储服务110访问的任何其他介质。另外,可以使用逻辑仓储服务110来存储输入文件(诸如应用逻辑
132和主机逻辑134的规范)以及关于逻辑仓储服务110的逻辑设计和/或用户的元数据。所产生的配置数据136可以按一个或多个性质来编索引,所述性质诸如,例如,用户标识符、一个或多个实例类型、市场标识符、机器图像标识符以及可配置硬件标识符。
[0031] 逻辑仓储服务110可以接收下载配置数据的API请求160。举例来说,可以在计算资源120的用户在计算资源120内开始或部署新实例(例如,“F1.小”实例)时产生请求160。作为另一个实例,可以响应于来自在操作实例上执行的应用程序的请求而产生请求160。请求160可以包括对源和/或目标实例的参考、对要下载的配置数据(例如,实例类型、市场标识符、机器图像标识符或可配置硬件标识符)的参考、用户标识符、授权令牌和/或用于识别要下载的配置数据和/或授权访问所述配置数据的其他信息。如果请求配置数据的用户被授权访问所述配置数据,那么可以从逻辑仓储数据库150检索配置数据,并且可以将经验证的配置数据162(例如,完整或部分的位流)下载到请求实例(例如,服务器计算机140)。可以使用经验证的配置数据162来配置目标实例的可配置逻辑。
[0032] 逻辑仓储服务110可以核实可以将经验证的配置数据162下载到请求实例。可以由逻辑仓储服务110在多个不同点处进行验证。举例来说,验证可以包括核实应用逻辑132与主机逻辑134兼容。明确地说,可以对模拟装置执行一组回归测试以核实在将应用逻辑132添加到设计之后主机逻辑134按照预期运行。另外地或可选地,可以核实应用逻辑132被指定为仅驻留在可重配置区中,所述可重配置区域主机逻辑134的可重配置区分离。作为另一个实例,验证可以包括核实经验证的配置数据162与将要下载的实例类型兼容。作为另一个实例,验证可以包括核实请求者被授权访问经验证的配置数据162。如果验证检查中的任一者失败,那么逻辑仓储服务110可以拒绝下载经验证的配置数据162的请求。因此,逻辑仓储服务110可以潜在地保护计算资源120的安全性和可用性,同时使用户能够定制计算资源120的硬件。
[0033] 包括主机逻辑壳的示例性可配置平台
[0034] 图2和图3是展示包括主机逻辑壳和应用逻辑的可配置逻辑平台的实例的系统图。图2示出可以如何在可配置逻辑平台的资源间分配主机逻辑壳和应用逻辑的方面。具体地说,所述可配置逻辑平台可以在逻辑上组织成静态逻辑区域和可重配置逻辑区域,并且可以在这些区域之间分配所述主机逻辑壳和应用逻辑。图3示出可配置逻辑平台的特定实现方式并且展示在主机逻辑壳中包括的示例性功能。另外,图3示出可以如何使用主机逻辑壳来封装应用逻辑。
[0035] 图2是展示包括主机逻辑壳250和应用逻辑230的可配置逻辑平台200的实例的系统图。作为一个实例,可配置逻辑平台200可以包括一个或多个FPGA集成电路。主机逻辑壳250封装应用逻辑230,使得可以潜在地阻止应用逻辑230格式化事务并直接地控制用于驱动与主机服务器计算机的物理互连的信号,所述主机服务器计算机连接到可配置逻辑平台
200。换句话说,主机逻辑壳250可以插入于可配置逻辑平台200的应用逻辑230与物理接口(未图示)之间。因此,应用逻辑230无法用于无意地或恶意地违反物理互连的协议,所述违反可能会潜在地损坏外部组件或导致外部组件出现故障。
[0036] 除了将可配置逻辑平台200的资源分类为主机逻辑壳250或应用逻辑230之外,还可以将所述资源分类为静态逻辑210和可重配置逻辑220。静态逻辑210和可重配置逻辑220的资源可以具有至少一些相同类型的组件(例如,LUT、触发器、锁存器或RAM),但是在至少一些情况中,静态逻辑210是在与可重配置逻辑220不同的时间时进行编程。举例来说,可以在可配置逻辑平台200的初始化序列期间对静态逻辑210进行编程。所述初始化序列可以响应于例如检测到上电条件或检测到重设条件而发生。作为一个实例,用于对静态逻辑210编程的配置数据可以存储在嵌入式快闪存储器(未图示)上或存储在连接到可配置逻辑平台200的快闪存储器(未图示)上。可以在已对静态逻辑210进行编程并且静态逻辑在操作中之后对可重配置逻辑220进行编程。可配置逻辑平台200的资源可以划分到不同的物理区中,其中可以用静态逻辑210对所述区中的一些区进行编程,并且可以用可重配置逻辑220对其他区进行编程。作为一个实例,可以使用楼层平面图工具来限定(例如,分割)静态区和可重配置区。可以在可重配置逻辑220的区中对应用逻辑230进行编程,并且可以在可重配置逻辑220与静态逻辑210的区中对主机逻辑壳250进行编程。
[0037] 主机逻辑壳250可以包括对于使用可配置逻辑平台200的不同的顾客很可能不会改变的组件。可以在静态逻辑210中对这些组件进行编程。举例来说,主机逻辑壳250的可能是多个顾客共同的组件可以包括主机接口逻辑212、编程控制逻辑214和管理功能216。
[0038] 主机接口逻辑212可以包括用于与被分配给顾客使用的主机服务器计算机通信的逻辑电路。具体地说,主机接口逻辑212可以用于连接到物理互连并且使用所述物理互连的通信协议与服务器计算机120通信。作为一个实例,所述服务器计算机可以使用与可配置逻辑平台200相关联的地址的事务与可配置逻辑平台200通信。类似地,可配置逻辑平台200可以使用包括与所述服务器计算机相关联的地址的事务来与所述服务器计算机通信。与连接到所述物理互连的各种装置相关联的地址可以由系统架构师预先限定并编程到驻留于所述装置上的软件中。另外地或可选地,所述通信协议可以包括枚举序列,其中询问连接到所述物理互连的装置并且其中作为所述枚举序列的部分将地址指派给所述装置中的每一者。作为一个实例,主机服务器计算机可以向连接到所述物理互连的装置中的每一者发出询问。主机接口逻辑212可以通过提供关于可配置逻辑平台200的信息来对所述询问作出响应,所述信息诸如许多功能如何存在于可配置逻辑平台200上以及与可配置逻辑平台200的每个功能相关联的地址范围的大小。基于此信息,可以分配地址,使得连接到所述物理互连的每个装置的每个功能被指派不重叠的地址范围。在枚举之后,主机服务器计算机可以基于事务的地址将所述事务投送到可配置逻辑平台200的功能。使主机接口逻辑212成为主机逻辑壳250的部分可以潜在地防止应用逻辑230通过主机接口产生格式错误或未批准的请求。
[0039] 编程控制逻辑214可以包括用于配置和重配置可配置逻辑平台200的电路。使编程控制逻辑214成为主机逻辑壳250的部分可以潜在地防止应用逻辑230对可配置逻辑平台200的资源重新编程。具体地说,使编程控制逻辑214成为主机逻辑壳250的部分可以潜在地防止主机逻辑壳250的组件通过应用逻辑230重新编程。
[0040] 管理功能216可以用于管理和配置可配置逻辑平台200。可以使用以管理功能216的地址范围为目标的事务将命令和数据从服务器计算机发送到管理功能216。举例来说,服务器计算机可以产生用于传送数据(例如,配置数据)和/或对可配置逻辑平台200的控制寄存器进行写入的事务,所述控制寄存器映射到管理功能216的地址范围内的一个或多个地址。对控制寄存器进行写入可能会导致可配置逻辑平台200执行操作,诸如配置和管理可配置逻辑平台200。
[0041] 主机逻辑壳250可以包括可以针对使用可配置逻辑平台200的不同顾客进行修改的组件。作为一个实例,可以向顾客呈现主机逻辑壳的目录或列表,并且每个顾客可以选择很可能最好地满足应用逻辑的要求的主机逻辑壳。作为另一个实例,可以向顾客呈现基础主机逻辑壳并且可以选择主机逻辑壳的特定特征来实施。可以在可配置逻辑220中对所述可选择的特征进行编程。可以由应用逻辑230使用与主机逻辑壳250的预定义接口来访问所述可选择的特征。
[0042] 作为另一个实例,主机逻辑壳250的可以针对特定顾客进行修改的组件可以包括内部(例如,芯片上)外围逻辑222、外部(例如,芯片外)外围逻辑224和/或加速器226。内部外围逻辑222可以包括处理器、存储器(诸如RAM、ROM、快闪存储器等)、邮箱、定时器等中的一者或多者。外部外围逻辑224可以包括用于访问芯片外组件240的逻辑功能和接口。举例来说,外部外围组件224可以包括:用于与芯片外存储装置(诸如硬盘驱动器或固态驱动器)通信的存储控制器;用于与芯片外存储器(诸如DRAM)通信的存储器控制器;用于与其他可配置逻辑平台(诸如串行接口或并行接口)通信的接口;以及用于与发光二极管微控制器、JTAG(例如,IEEE 1149.1)装置、通用异步接收器/发射器(UART)通信的接口等。加速器226可以包括通用或专用处理器、直接存储器存取(DMA)引擎、加密引擎、解密引擎、压缩引擎、解压缩引擎等。
[0043] 图3是展示包括可配置硬件平台310和服务器计算机320的系统300的实例的系统图。可配置硬件平台310被编程有应用逻辑以及基于所述应用逻辑进行修改的主机逻辑壳。如图3中所示,可配置硬件平台310的除了应用逻辑340以外的组件是主机逻辑壳的部分。服务器计算机320与可配置硬件平台310可以经由物理互连330连接。举例来说,物理互连330可以是快速PCI、PCI或将服务器计算机320紧密地联接到可配置硬件平台310的任何其他互连。服务器计算机320可以包括CPU 322、存储器324和互连接口326。举例来说,互连接口326可以提供桥接能力,使得服务器计算机320可以访问在服务器计算机320外部的装置。举例来说,互连接口326可以包括主机功能,诸如如在快速PCI中使用的根复合体功能性。
[0044] 可配置硬件平台310可以包括可重配置逻辑块和其他硬件。可重配置逻辑块可以被配置或被编程以执行可配置硬件平台310的各种功能。可以用不同的配置对可重配置逻辑块多次编程,使得所述块可以在装置的使用期限期间执行不同的功能。举例来说,可以针对一个顾客用一个配置对可重配置逻辑块编程并且可以针对不同的顾客用不同的配置对可重配置逻辑块编程。可配置硬件平台310的功能可以基于每个功能的目标或能力或基于所述功能何时载入到可配置硬件平台310上来分类。举例来说,可配置硬件平台310可以包括静态逻辑、可重配置逻辑和硬宏。所述静态逻辑、可重配置逻辑和硬宏的功能性可以在不同的时间并且通过不同的方法来配置。举例来说,可以在制作可配置硬件平台310时对硬宏的功能性硬连线。作为另一个实例,可以经由JTAG控制器或基板管理控制器(BMC)等从内部或外部快闪存储器载入静态逻辑。作为另一个实例,可以使用在静态逻辑内实施的主机接口来载入可重配置逻辑。因此,可以逐渐地载入可配置硬件平台310的功能性。
[0045] 硬宏可以执行预定义功能并且在可配置硬件平台310上电时可以是可用的。举例来说,硬宏可以包括执行特定功能的硬连线电路。作为特定实例,所述硬宏可以包括用于配置可配置硬件平台310的配置访问端口(CAP)311、用于传送串行数据的串行化器-解串行化器收发器(SERDES)312、用于传信和控制芯片外存储器(诸如双倍数据速率(DDR)DRAM 381)的存储器或动态随机存取存储器(DRAM)控制器313以及用于传信和控制存储装置382的存储控制器314。
[0046] 静态逻辑可以在启动时载入到可重配置逻辑块上。举例来说,可以在启动序列期间从芯片上或芯片外快闪存储器装置载入说明静态逻辑的功能性的配置数据。所述启动序列可以包括检测电力事件(诸如通过检测电源电压已从阈值以下转变到阈值以上)以及响应于所述电力事件而使重置信号失效。可以响应于所述电力事件或使重置失效而触发初始化序列。所述初始化序列可以包括使用配置访问端口311来读取存储在快闪存储器上的配置数据并且将所述配置数据载入到可配置硬件平台310上,使得可配置逻辑块的至少一部分被编程有静态逻辑的功能性。在载入静态逻辑之后,可配置硬件平台310可以从载入状态转变为包括静态逻辑的功能性的操作状态。主机逻辑壳的基础通信和保护逻辑可以例如在静态逻辑中实施。
[0047] 可以在可配置硬件平台310在工作时(例如,在载入了静态逻辑之后)将可重配置逻辑载入到可重配置逻辑块上。可以将对应于可重配置逻辑的配置数据存储在芯片上或芯片外存储器中和/或可以从可配置硬件平台310的接口(例如,互连接口356)接收或流式传输所述配置数据。可以将可重配置逻辑划分到非重叠区中,所述非重叠区可以与静态逻辑介接。举例来说,可重配置区可以布置成阵列或其他规则或半规则结构。举例来说,在硬宏放置于阵列结构内的情况下,所述阵列结构可以包括孔或阻碍物。不同的可重配置区可以通过使用信号线来与彼此、静态逻辑和硬宏通信,所述信号线可以被指定为静态逻辑。不同的可重配置区可以在不同的时间点进行配置,使得第一可重配置区可以在第一时间点进行配置并且第二可重配置区可以在第二时间点进行配置。
[0048] 可配置硬件平台310的功能可以基于所述功能的目标或能力来划分或分类。举例来说,所述功能可以被分类为控制平面功能、数据平面功能和共享功能。控制平面可以用于管理和配置可配置硬件平台310。数据平面可以用于管理载入到可配置硬件平台310上的加速器逻辑与服务器计算机320之间的数据传送。共享功能可以由控制平面与数据平面使用。可以在载入数据平面功能性之前将控制平面功能性载入到可配置硬件平台310上。数据平面可以包括配置有应用逻辑340的经封装的可重配置逻辑。控制平面可以包括可配置硬件平台310的主机逻辑。
[0049] 一般来说,可以使用可配置硬件平台310的不同功能来访问数据平面和控制平面,其中所述不同功能被指派给不同的地址范围。具体地说,可以使用管理功能352来访问控制平面功能,并且可以使用数据路径功能或应用功能354来访问数据平面功能。地址映射层350可以辨别去往控制平面或数据平面的事务。明确地说,来自服务器计算机320的去往可配置硬件平台310的事务可以使用所述事务内的地址来识别。具体地说,如果事务的地址落入指派给可配置硬件平台310的地址范围内,那么所述事务是去往可配置硬件平台310。可以经由物理互连330来发送事务并且在互连接口356处接收所述事务。互连接口356可以是物理互连330的端点。应理解,物理互连330可以包括布置在用于将装置或组件连接到服务器计算机320的结构中的额外装置(例如,交换机和网桥)。
[0050] 地址映射层350可以分析事务的地址并且基于所述地址来确定将所述事务投送到可配置硬件平台310内的何处。举例来说,可以给管理功能352指派第一地址范围,并且可以使用该范围内的不同地址来访问管理平台的不同功能。可以通过主机逻辑专用结构360将具有落入被指派给管理功能352的范围内的地址的事物投送到控制平面的不同块。举例来说,可以将事务发往管理和配置块362。类似地,可以给应用功能354指派第二地址范围,并且可以通过使用所述范围内的不同地址来访问数据平面的不同功能。
[0051] 管理和配置块362可以包括与管理和配置可配置硬件平台310有关的功能。举例来说,管理和配置块362可以提供对配置访问端口311的访问,使得可以配置可重配置逻辑块。举例来说,服务器计算机320可以向管理和配置块362发送事务以开始将应用逻辑载入到经封装的可重配置逻辑340内。可以将对应于应用逻辑的配置数据从服务器计算机320发送到管理功能352。管理功能352可以通过主机逻辑结构360将对应于应用逻辑的配置数据投送到配置访问端口311,使得可以载入应用逻辑。
[0052] 作为另一个实例,管理和配置块362可以存储关于可配置硬件平台310的元数据。举例来说,不同逻辑块的版本、更新历史和其他信息可以存储在管理和配置块362的存储器中。服务器计算机320可以读取所述存储器以检索所述元数据中的一些或全部。具体地说,服务器计算机320可以发送以管理和配置块362的存储器为目标的读取请求,并且管理和配置块362可以产生读取响应数据以返回给服务器计算机320。
[0053] 还可以使用管理功能352来访问可配置硬件平台310的专用外围设备。所述专用外围设备是仅可从控制平面访问的组件。举例来说,所述专用外围设备可以包括JTAG(例如,IEEE 1149.1)控制器370、发光显示器(LED)371、微控制器372、通用异步接收器/发射器(UART)373、存储器374(例如,串行外设接口(SPI)快闪存储器)以及可从控制平面但不可从数据平面访问的任何其他组件。管理功能352可以通过经由主机逻辑专用结构360和专用外设接口375投送命令来访问所述专用外围设备。专用外设接口375可以与所述专用外围设备直接通信。
[0054] 公共外围设备是可从控制平面或数据平面访问的共享功能。举例来说,可以通过在指派给管理功能352的地址范围内对事务进行寻址来从控制平面访问公共外围设备。可以通过在指派给应用功能354的地址范围内对事务进行寻址来从数据平面访问公共外围设备。因此,公共外围设备是可以具有多个地址映射并且可以由控制平面与数据平面使用的组件。公共外围设备的实例是其他可配置硬件平台(CHP)380、DRAM 381(例如,DDR DRAM)、存储装置382(例如,硬盘驱动器和固态驱动器)以及可以用于产生、存储或处理信息的其他各种组件。可以经由公共外设接口385访问公共外围设备。因此,公共外设接口385可以是在公共外围设备与可配置硬件平台310的其他功能之间转置的中间层。具体地说,公共外设接口385可以转译来自控制平面或数据平面的请求并且对去往公共外围设备的通信格式化为公共外围设备的本地协议。
[0055] 邮箱390和看门狗定时器392是可从控制平面或数据平面访问的共享功能。具体地说,邮箱390可以用于在控制平面与数据平面之间传递消息和其他信息。举例来说,邮箱390可以包括缓冲器、控制寄存器(诸如信号量)和状态寄存器。通过使用邮箱390作为控制平面与数据平面之间的中间人,可以潜在地增加数据平面与控制平面之间的隔离,这样可以提高可配置硬件平台310的安全性。
[0056] 看门狗定时器392可以用于检测硬件和/或软件故障并且从硬件和/或软件故障中恢复。举例来说,看门狗定时器392可以监测执行特定任务所花的时间量,并且如果所述时间量超过阈值,那么看门狗定时器392可以开始某事件,诸如将值写入到控制寄存器或导致中断或使重置起效。作为一个实例,在开始第一任务时可以用第一值来初始化看门狗定时器392。看门狗定时器392可以在其初始化之后自动地倒计时,并且如果看门狗定时器392达到零值,那么可以产生事件。可选地,如果第一任务在看门狗定时器392达到零值之前完成,那么在开始第二任务时可以用第二值来重新初始化看门狗定时器392。可以分别基于完成第一任务和第二任务的工作复杂性和工作量来选择第一值和第二值。
[0057] 可以使用应用功能354来访问数据平面功能,诸如应用逻辑340。举例来说,去往应用逻辑340的事务可以致使数据被载入、处理和/或返回给服务器计算机320。具体地说,可以使用具有在指派给应用逻辑354的范围内的地址的事务来访问数据平面功能。举例来说,可以经由应用功能354将事务从服务器计算机320发送到应用逻辑340。具体地说,可以经由外围结构364将去往应用功能354的事务投送到应用逻辑340。来自应用逻辑340的响应可以经由外围结构364投送到应用功能354并且随后返回到服务器计算机320。另外地,可以使用使用和事务监测层366来监测由应用逻辑340产生的数据和事务。监测层366可以潜在地识别违反预定义规则并且可能会产生将经由控制平面发送的警报的事务或数据。另外地或可选地,监测层366可以终止违反了监测层366的任一标准的由应用逻辑340产生的任何事务。另外地,监测层366可以分析移动到应用逻辑340或来自应用逻辑的信息,使得可以收集并且从控制平面访问关于所述信息的统计数据。
[0058] 还可以通过对直接存储器存取(DMA)引擎342进行编程来在服务器计算机320与应用逻辑之间传送数据。DMA引擎342可以包括用于对从源位置到目标位置的DMA传送进行编程或说明的控制和状态寄存器。作为一个实例,DMA引擎342可以被编程为将存储在服务器计算机320的存储器324内的信息拉取到应用逻辑340中或拉取到可配置硬件平台310的公共外围设备中。作为另一个实例,DMA引擎342可以被编程为将由应用逻辑340产生的数据推送给服务器计算机320的存储器324。由应用逻辑340产生的数据可以从应用逻辑340流式传输或可以写入到公共外围设备,诸如存储器381或存储装置382。
[0059] 应用逻辑340可以与其他可配置硬件平台380通信。举例来说,可以通过一个或多个串行线路来连接其他可配置硬件平台380,所述串行线路与SERDES 312通信。应用逻辑340可以产生去往不同的可配置硬件平台380的事务,并且可以通过CHP结构344将所述事务投送到可配置硬件平台380的对应串行线路(经由SERDES 312)。类似地,应用逻辑340可以使用反向路径从其他可配置硬件平台380接收信息。
[0060] 总之,可配置硬件平台310的功能可以被分类为控制平面功能和应用功能。所述控制平面功能可以用于监测和限制数据平面的能力。所述数据平面功能可以用于加快在服务器计算机320上运行的用户的应用程序。通过将控制平面和数据平面的功能分离,可以潜在地提高服务器计算机320和其他计算基础设施的安全性和可用性。举例来说,应用逻辑340无法直接发信号到物理互连330上,因为控制平面的中间层控制物理互连330的事务的格式化和发信号。作为另一个实例,可以防止应用逻辑340使用可以用于重配置可配置硬件平台310和/或访问可能保密的管理信息的专用外围设备。作为另一个实例,应用逻辑340仅可以通过中间层访问可配置硬件平台310的硬宏,使得使用所述中间层来控制应用逻辑340与硬宏之间的交互。
[0061] 示例性逻辑仓储服务
[0062] 图4是展示逻辑仓储服务405的示例性架构400的系统图。逻辑仓储服务405可以包括硬件、软件或硬件与软件的组合。作为一个实例,逻辑仓储服务405可以是在由计算服务提供者管理的服务器计算机上执行的软件。可以通过一个或多个网络API来访问逻辑仓储服务405。逻辑仓储服务405可以包括各种组件,诸如摄入服务407、配置数据产生块430、逻辑库管理块440和计算服务接口460。逻辑仓储服务405的组件中的每一者可以包括硬件、软件或硬件与软件的组合。摄入服务407可以用于摄入应用逻辑设计的规范并且从多个主机逻辑设计中选择特定的主机逻辑设计。配置数据产生块430可以用于基于所述应用逻辑设计和所述特定的主机逻辑设计来产生配置数据。计算服务接口460可以用于响应于对所述配置数据的请求而经由网络将配置数据传输到服务器计算机。
[0063] 逻辑仓储服务405可以包括用于服务计算服务提供者的API请求的提供者接口410。可以使用提供者接口410来鉴认请求是来自计算服务提供者的代理,诸如通过使用在所述请求中提供的凭证来鉴认请求者的身份。提供者接口410可以提供主机逻辑摄入功能性415。明确地说,提供者接口410可以接收将主机逻辑设计上传到逻辑仓储服务405的请求,并且可以通过主机逻辑摄入功能性415处理所述请求。可以通过使用主机逻辑摄入功能性415上传多个主机逻辑设计来上传主机逻辑设计的库。如先前所描述,主机逻辑可以包括用于将应用逻辑封入沙盒以维持计算资源的安全性和可用性的逻辑。另外地,主机逻辑还可以划分为静态逻辑和可重配置逻辑。静态逻辑可以在初始化序列期间(例如,在启动时)进行配置,而可重配置逻辑可以在可配置逻辑的操作期间在不同时间进行配置。作为一个实例,快速PCI接口可以指定在使重置信号失效之后的约一百毫秒内启动和枚举PCI端点。
主机逻辑可以划分为可以在分配的时间窗内载入的静态逻辑以及可以在所述时间窗已过去之后载入的可重配置逻辑。静态逻辑可以用作不同的可重配置区之间的接口。可以使用HDL或寄存器传送逻辑(RTL)源代码(诸如Verilog或VHDL)来说明主机逻辑设计。RTL可以是加密或非加密的。主机逻辑设计可以指定所述设计的某些特征,所述特征对于所述设计的用户来说可以是任选的。举例来说,可以将所述设计的任选特征放在指示杂注或宏语句(诸如Verilog中的‘ifdef语句)中,使得顾客可以通过指定包括宏(诸如通过使用‘define语句来设定变量)来选择任选特征。可以使用主机逻辑摄入模块415来对接收到的主机逻辑设计执行检查、对所述主机逻辑设计解密和/或提供所述主机逻辑设计的版本信息。另外地,所述请求可以包括用于将主机逻辑设计与一个或多个实例类型相关联的信息。举例来说,一些主机逻辑设计可以仅对实例类型的一个子集起作用,而其他主机逻辑设计可以仅对实例类型的不同子集起作用。因此,可以通过上传多个不同的主机逻辑设计和/或通过使用指示杂注或宏语句使单独主机逻辑设计的特征变成可选的来提供可适应性主机逻辑设计的库。
[0064] 逻辑仓储服务405可以包括用于服务来自逻辑仓储服务405的用户的API请求的顾客-开发者接口420。可以使用顾客-开发者接口420来鉴认请求是来自计算服务提供者的用户,诸如通过使用在所述请求中提供的凭证来鉴认请求者的身份。举例来说,可以向所述用户中的每一者提供账户,所述账户可以用于识别所述用户以进行访问管理、计账和使用追踪。可以限制所述用户仅观看和修改其有权访问的逻辑设计。举例来说,可以防止所述用户上传和/或修改主机逻辑。然而,顾客-开发者接口420可以向用户呈现用户可以选择的不同主机逻辑设计的列表,使得可以基于所述用户的应用设计来修改所述主机逻辑设计。作为一个实例,用户可以通过从顾客-开发者接口420的菜单中选择主机逻辑设计和/或主机逻辑设计的特征来限定要使用的主机逻辑设计。作为另一个实例,用户可以在API请求内或通过将指示编码在应用设计规范中来限定要使用的主机逻辑设计。作为另一个实例,可以由逻辑仓储服务405的组件通过分析应用逻辑的接口、由应用逻辑使用的资源的量、对加速器或外围设备的参考或应用逻辑的其他要求来自动地选择主机逻辑设计和/或主机逻辑设计的特征。
[0065] 顾客-开发者接口420可以包括用于接收和/或处理应用逻辑设计的应用逻辑摄入功能性425。可以使用源代码(例如,HDL或RTL代码)、包括可配置逻辑块和所述可配置逻辑块之间的连接的列表的网表和/或配置数据来说明应用逻辑设计。举例来说,所述配置数据可以包括在上传到逻辑仓储服务之前已经预先编译的完整的或部分的位流。所述应用逻辑将与主机逻辑组合(诸如通过配置数据产生块430)以创建可以载入到可配置硬件平台上的逻辑。处理所述应用逻辑设计可以包括将源代码转译和/或编译为较低级的格式(例如,编译OpenCL以产生行为或结构Verilog)、核实存在所要求的逻辑和/或信号(诸如与主机逻辑的接口信号)、核实不存在已知的限制电路(诸如环形振荡器)以及为产生配置数据作好准备的其他各种任务。
[0066] 顾客-开发者接口420可以接受来自用户的各种类型的请求。作为一个实例,用户可以请求创建可配置硬件图像(CHI)。CHI可以提供用于在计算环境内配置可配置硬件的实例的信息。举例来说,CHI可以包括一个或多个兼容的实例类型、用于配置可配置硬件的配置数据、用于控制对CHI的访问的访问许可以及与配置所述可配置硬件相关联的任何其他信息。创建CHI的请求可以包括针对以下各者的字段:设计描述或标题、所述设计的生产状态、所述设计是否加密、对所述设计的源代码的参考、源代码指示符的类型、与配置数据兼容的一个或多个实例类型以及对存储报告信息的位置的参考。
[0067] 作为另一个实例,可以使用第二请求类型来检索关于与用户相关联的CHI的信息。明确地说,所述请求可以包括多个字段,诸如CHI标识符、机器图像(MI)标识符、产品代码、实例类型和实例标识符。响应于所述请求,顾客-开发者接口420可以呈现关于与用户相关联的匹配所述请求中的一个或多个字段的CHI的信息。举例来说,可以将匹配搜索字段的所有CHI与和每个CHI相关联的状态一起列出。所述CHI可以被报告为处于试验或生产状态,或处于完成或进行中状态。举例来说,可能会花几个小时来从源代码创建CHI并且因此可以使用此请求来检查CHI的综合或实施的状态。
[0068] 作为另一个实例,第三种类型的请求可以是将CHI与MI相关联。MI可以提供用于在计算环境内启动计算资源的实例的信息。在一个实施方案中,所述实例是在管理程序内执行的虚拟机,所述管理程序在计算环境内的服务器计算机上执行。MI可以包括实例的类型(诸如通过指定架构、CPU能力、协同处理器、外围设备和/或可配置硬件设计)、用于实例的根卷(例如,包括操作系统、装置驱动器和/或应用程序)的模板、以及用于控制MI的可访问性的访问许可(例如,有权使用MI的账户的列表)以及用于指定在实例启动时将附接到所述实例的卷的块装置映射。通过将MI与CHI相关联,可以在基于MI的虚拟机启动时将与CHI相关联的可配置数据下载到服务器计算机的可配置逻辑。
[0069] 作为另一个实例,第四种类型的请求可以是向市场发布CHI。举例来说,可以将产品代码与CHI相关联,这样可以使得能够在市场中列出所述CHI。所述市场可以由计算服务提供者的用户观看,并且可以提供由一个用户开发并且另一个用户可取得授权或可购买的硬件加速器IP的列表。当用户购买在市场上发布的CHI或取得所述CHI的授权时,可以将所述用户的账户信息添加到可以访问所述CHI的用户的列表中。
[0070] 可以使用配置数据产生块430来产生配置数据。举例来说,所述配置数据可以基于应用逻辑设计以及由用户选择的主机逻辑设计。作为另一个实例,所述配置数据可以仅基于应用逻辑设计或仅基于主机逻辑设计。明确地说,配置数据产生块430可以仅基于主机逻辑设计来产生静态逻辑。所述静态逻辑可以是主机逻辑设计的库所共有的。另外地,配置数据产生块430可以针对可配置逻辑的一个或多个可重配置区产生可重配置逻辑。举例来说,可以使用配置数据产生块430来为预留给主机功能的区产生主机可重配置逻辑。作为另一个实例,可以使用配置数据产生块430来为主要预留给应用功能的区产生应用可重配置逻辑。作为另一个实例,可以使用配置数据产生块430来为应用逻辑以及适于与应用逻辑一起使用的主机逻辑设计来产生可重配置逻辑。
[0071] 配置数据产生块430的输入可以是应用逻辑设计(诸如来自应用逻辑摄入425)、主机逻辑设计(诸如来自主机逻辑摄入415)和/或描述各种实施细节(诸如时钟频率、分割信息、放置信息、目标技术等)的约束。所述逻辑设计可以包括使用HDL、网表和/或配置数据描述的源代码。配置数据产生块430可以将应用和适于所述应用的主机设计组合到一个设计中以产生配置数据。如参看图5更详细地描述,配置数据产生块430可以包括在服务器计算机上执行的逻辑综合软件以及放置和布线软件。使用此软件,配置数据产生块430可以产生配置数据以便载入到可配置硬件平台上。
[0072] 可以使用逻辑库管理块440来管理来自配置数据产生块430的输出。举例来说,逻辑库管理块440可以将用户信息与配置数据相关联并且将所述信息存储在逻辑仓储数据库450处。可以使用逻辑库管理块440来维持各种逻辑组件和源输入文件的所有权和版本信息。逻辑库管理块440可以执行设计源代码文件和CHI文件的加密和解密,使得所述文件可以加密地存储在逻辑仓储数据库450处。通过对文件加密,可以保护不同用户的知识产权。
[0073] 计算服务接口460可以用作逻辑仓储服务405与计算资源之间的接口。举例来说,当在计算资源上创建实例时,可以向计算服务接口460发送API请求,并且可以将配置数据下载到请求资源。第一种类型的请求可以是响应于在计算资源的服务器计算机上开始或部署新实例。举例来说,所述请求可以是针对在服务器计算机的互连上枚举可配置逻辑之前载入和启动的静态逻辑。明确地说,所述请求可以由静态逻辑下载块465服务,所述静态逻辑下载块可以经由逻辑库管理块440从逻辑仓储数据库450检索配置数据。可以使用静态逻辑下载组件465来将静态逻辑下载到请求实例上的可配置硬件平台。另外地,请求可以是针对可配置逻辑,并且可以使用可重配置逻辑下载组件464来服务所述请求。具体地说,可重配置逻辑下载可以经由逻辑库管理块440从逻辑仓储数据库450检索配置数据。所述请求可以是针对可重配置主机逻辑或针对可重配置应用逻辑。对可重配置逻辑的请求可以是响应于在计算资源的服务器计算机上开始或部署新实例。可选地,对可重配置逻辑的请求可以是响应于在请求可重配置逻辑的服务器计算机上运行的客户端应用程序。举例来说,在服务器计算机上运行的应用程序可以请求在所述程序的不同点处将不同的硬件加速器下载到可配置硬件平台。计算服务接口460可以鉴认请求,使得仅具有检索可配置逻辑数据的访问权限的用户可以下载配置数据。举例来说,所述请求可以包括授权令牌,并且如果授权令牌匹配预期的授权令牌,那么可以服务所述请求。否则,可以拒绝所述请求。
[0074] 还可以使用计算服务接口460来从计算资源接收信息。举例来说,计算服务接口460可以在计算资源上创建、重配置或使用实例时从计算资源接收状态更新。作为特定实例,可以通知计算服务接口460配置数据是否成功地部署在计算资源上。举例来说,可能归因于硬件故障或其他原因而无法部署配置数据。计算服务接口460与逻辑库管理块440一起可以维护使用数据、失败报告和/或关于存储在逻辑仓储数据库450中的不同设计的统计数据。可以在例如在提供者接口410或顾客/开发者接口420处接收到请求时按需要将所述统计数据提供给计算服务提供者或用户。
[0075] 图5示出如可以由逻辑仓储服务执行的摄入逻辑设计和产生配置数据的示例性方法500。所述逻辑仓储服务可以包括硬件、软件或硬件与软件的组合。方法500可以包括各种步骤,诸如摄入510、产生502以及传输504。可以使用硬件、软件或硬件与软件的组合来执行方法500的每个步骤。摄入510可以包括摄入应用逻辑设计的规范以及从多个主机逻辑设计中选择特定的主机逻辑设计。产生502可以包括基于所述应用逻辑设计和所述特定的主机逻辑设计来产生配置数据。传输504可以包括响应于对配置数据的请求经由网络将配置数据传输到服务器计算机。
[0076] 在摄入510期间,可以由逻辑仓储服务接收应用逻辑设计和/或主机逻辑设计。可以诸如通过使用IEEE 1735-2014加密标准来对逻辑设计加密。可以在摄入510期间或在方法500的后面的步骤期间对逻辑设计解密。作为一个实例,可以在摄入510期间接收用于应用逻辑和主机逻辑的源代码,并且可以将应用逻辑与主机逻辑组合到单个设计中以产生用于逻辑综合520的源代码。可以使用包括在应用逻辑的规范中的指示杂注或宏语句来基于应用逻辑修改主机逻辑。另外地或可选地,可以通过接收从菜单中对特定主机逻辑设计的选择来修改主机逻辑,其中所述菜单在摄入510期间向用户呈现了不同的主机逻辑设计和/或特征。另外地或可选地,可以通过在摄入510期间使用在请求中的API来接收对主机设计的参考来修改主机逻辑。
[0077] 可以使用逻辑综合520来将用行为和/或结构RTL编写的规范(例如,源代码)转变成基于目标技术的网表。用于限定应用逻辑和主机逻辑的规范可以从方法500的输入步骤510、产生步骤502或传输步骤504输入。通过使用可适应性主机逻辑,可以取决于被选择来包括在主机逻辑中的特征来增加或减少由主机逻辑使用的资源的量。因此,通过减少主机逻辑中的特征,可以有更多资源供应用逻辑使用。逻辑综合520可以以不同的可配置逻辑技术为目标,诸如具有不同的架构、制造过程、容量和/或制造商的FPGA。所述网表可以包括许多可配置逻辑块、不可配置逻辑块(例如,硬宏)以及不同的块之间的连接。所述网表可以是逻辑网表,其中枚举了网表的块但所述块未放置在目标技术内。所述网表可以用作放置和布线530的输入。放置和布线530可以从网表和布线信息中取得可配置块的实例,并且将所述块映射到物理装置。放置和布线530可以产生用于对可编程互连进行编程的数据,所述可编程互连将所述物理装置内的块相连接。因此,放置和布线设计可以包括所述网表的每个逻辑组件以及不同的逻辑组件之间的连接的物理映射。另外地或可选地,放置和布线530可以是定时驱动的,使得基于所述设计的定时约束和物理装置的物理约束来修改所述网表。
放置和布线530的输出可以是配置数据,诸如位流图像。所述配置数据可以被分割或划分到不同的组件中。举例来说,所述配置数据可以包括与静态主机逻辑、可重配置主机逻辑和/或可重配置应用逻辑相关联的数据。所述不同的组件可以是重叠或非重叠的。举例来说,所述静态主机逻辑可以布线通过由可重配置应用逻辑使用的区。因此,用于可重配置应用逻辑的部分位流还可以包括静态主机逻辑的部分。
[0078] 作为另一个实例,可以在摄入510期间接收用于应用逻辑和/或主机逻辑的网表。作为特定实例,可以接收用于应用逻辑的网表,并且可以接收用于主机逻辑的源代码。在这种情况下,可以通过逻辑综合520对主机逻辑进行综合以产生用于主机逻辑的网表,并且可以将用于主机逻辑和应用逻辑的网表组合到单个设计中以产生用于放置和布线530的网表。作为另一个实例,可以在摄入510期间接收用于应用逻辑和/或主机逻辑的配置数据。举例来说,可以接收用于应用逻辑设计的部分位流,或可以接收针对主机和应用逻辑设计的完整位流。
[0079] 逻辑仓储服务还可以包括库管理和验证540功能性。举例来说,方法500的每个步骤可以产生可以存储在数据库中的中间数据和/或文件。明确地说,可以按开发者的账户标识符对数据库编索引,使得开发者可以访问与所述开发者相关联的源代码、报告和配置数据。作为一个实例,可以在摄入510期间将用于应用逻辑的源代码与开发者的账户标识符相关联。可以将所述源代码与版本标识符相关联,所述版本标识符由开发者提供或在摄入510期间产生。可以为一个账户维持多个版本的源代码并且将所述多个版本的源代码存储在数据库内。可以将应用逻辑的每个版本与适于特定的应用逻辑设计的主机逻辑的版本相关联。配置数据的每个版本可以对应于应用逻辑的特定版本和主机逻辑的特定版本。可以在产生配置数据时创建位流或CHI标识符,并且源代码、网表和报告可以标有所述CHI标识符。可以在方法500的各种步骤时产生报告以提供关于逻辑设计的信息。举例来说,可以通过逻辑综合520来产生一个或多个综合报告,并且可以通过放置和布线530来产生一个或多个报告。作为一个实例,可以产生实施报告以提供关于逻辑设计的利用的信息。明确地说,可以提供由所述设计使用的一定百分数的硬件资源,使得可以对适当的实例类型实施所述设计。
[0080] 作为另一个实例,定时报告可以提供静态定时分析,所述静态定时分析表明所述设计是否满足可配置硬件的定时规范。逻辑综合520以及放置和布线530可以涉及随机的、非确定性的步骤,所述步骤可以随着工具的每一次运行而变,使得逻辑综合520以及放置和布线530的每一次运行可以提供不同的结果。因此,如果开发者具有不满足定时(如由定时报告指示)的设计,那么开发者可能希望重新运行逻辑综合520和/或放置和布线530。以此方式,开发者可以通过对同一个设计执行多次综合和布线运行来重复其设计。当所述综合以及放置和布线运行中的一者得到满足可配置硬件逻辑的定时规范的结果时,开发者可以将所述运行标记为生产运行。举例来说,开发者可以将由所述运行产生的CHI的状态改变为生产并且可以将位流标识符与所产生的配置数据相关联。
[0081] 可以在开发和部署步骤期间的各种点时使用库管理和验证540功能性来验证可配置逻辑的用户设计。作为一个实例,验证540可以包括执行模拟以核实应用逻辑是否与主机逻辑兼容,使得主机逻辑可以约束应用逻辑的功能性。验证540可以包括比较应用逻辑的网表并且确认应用逻辑满足可配置硬件平台的容量和区域限制。举例来说,可以限制应用逻辑仅使用一个或多个可重配置区内的逻辑。如果应用逻辑在那些区外部,那么可以拒绝所述应用逻辑。另外地,所述应用逻辑可以作为位流而摄入,并且可以通过验证540来验证所述位流。对位流的验证可以包括将所摄入的位流数据的与主机逻辑对应的一部分与所述主机逻辑的基线版本进行比较以确认所述主机逻辑未被破坏。来自验证块540的输出可以是经验证的配置数据。
[0082] 示例性的基于网络的计算服务提供者
[0083] 图6是基于网络的计算服务提供者600的计算系统图,所述系统图示出在其中可以使用本文中描述的实施方案的一个环境。依据背景,计算服务提供者600(即,云提供者)能够将计算和存储能力作为服务提供给一群终端接收者。在示例性实施方案中,可以针对某组织由所述组织或代表所述组织建立计算服务提供者。也就是说,计算服务提供者600可以提供“专用云环境”。在另一个实施方案中,计算服务提供者600支持多租户环境,其中多个顾客独立地操作(即,公共云环境)。一般来说,计算服务提供者600可以提供以下模型:基础设施即服务(“IaaS”)、平台即服务(“PaaS”)和/或软件即服务(“SaaS”)。可以提供其他模型。对于IaaS模型,计算服务提供者600可以将计算机作为物理或虚拟机器和其他资源来提供。如下文进一步描述,虚拟机可以作为客户机由管理程序运行。PaaS模型提供计算平台,所述计算平台可以包括操作系统、编程语言执行环境、数据库和网络服务器。应用开发者可以在计算服务提供者平台上开发并运行其软件解决方案,而不会具有购买和管理基础硬件和软件的成本。另外地,应用开发者可以在计算服务提供者平台的可配置硬件上开发和运行其硬件解决方案。SaaS模型允许在计算服务提供者中安装和操作应用软件。在一些实施方案中,终端用户使用运行网络浏览器或其他轻量级客户端应用程序的网络客户端装置(诸如桌上型计算机、膝上型计算机、平板计算机、智能电话等)来访问计算服务提供者600。本领域的技术人员将认识到计算服务提供者600可以被描述为“云”环境。
[0084] 特定的所示计算服务提供者600包括多个服务器计算机602A-602C。虽然仅示出三个服务器计算机,但是可以使用任何数目,并且大型中心可以包括数千个服务器计算机。服务器计算机602A-602C可以提供用于执行软件实例606A-606C的计算资源。在一个实施方案中,软件实例606A-606C是虚拟机。如本领域中所知,虚拟机是像物理机器那样执行应用程序的机器(即,计算机)的软件实现方式的实例。在虚拟机的实例中,服务器602A-602C中的每一者可以被配置成执行管理程序608或另一种类型的程序,所述另一种类型的程序被配置成使得能够在单个服务器上执行多个软件实例606。另外地,软件实例606中的每一者可以被配置成执行一个或多个应用程序。
[0085] 应了解,虽然本文中公开的实施方案主要是在虚拟机的背景下进行描述,但是其他类型的实例可以用于本文中公开的概念和技术。举例来说,本文中公开的技术可以用于存储资源、数据通信资源以及其他类型的计算资源。本文中公开的实施方案还可以在不利用虚拟机实例的情况下直接在计算机系统上执行应用程序的全部或一部分。
[0086] 服务器计算机602A-602C可以包括不同硬件资源或实例类型的异质集合。所述硬件实例类型中的一些可以包括可由计算服务提供者600的用户至少部分地配置的可配置硬件。实例类型的一个实例可以包括与可配置硬件604A通信的服务器计算机602A。具体地说,服务器计算机602A与可配置硬件604A可以经由局域互连(诸如PCIe)进行通信。实例类型的另一个实例可以包括服务器计算机602B和可配置硬件604B。举例来说,可配置逻辑604B可以集成在多芯片模块内或与服务器计算机602B的CPU集成在同一个裸片上。实例类型的另一个实例可以包括无任何可配置硬件的服务器计算机602C。因此,具有与不具有可配置逻辑的硬件实例类型都可以存在于计算服务提供者600的资源内。
[0087] 可以预留一个或多个服务器计算机620来执行用于管理服务器计算机602和软件实例606的操作的软件组件。举例来说,服务器计算机620可以执行管理组件622。顾客可以访问管理组件622以配置顾客所购买的软件实例606的操作的各种方面。举例来说,顾客可以购买、租用或租借实例并且对软件实例的配置进行改变。用于软件实例中的每一者的配置信息可以作为机器图像(MI)642存储在网络附加存储640上。具体地说,MI 642描述用于启动VM实例的信息。所述MI可以包括用于实例的根卷(例如,OS和应用程序)的模板、用于控制哪些顾客账户可以使用所述MI的启动许可以及指定在实例启动时将附接到所述实例的卷的块装置映射。所述MI还可以包括对可配置硬件图像(CHI)642的参考,所述可配置硬件图像将在所述实例启动时载入到可配置硬件604上。所述CHI包括用于对可配置硬件604的至少一部分进行编程或配置的配置数据。
[0088] 顾客还可以指定关于将如何响应于需求而对所购买的实例进行缩放的设置。管理组件还可以包括用于实施顾客策略的策略文档。自动缩放组件624可以基于由顾客限定的规则对实例606进行缩放。在一个实施方案中,自动缩放组件624允许顾客指定用于确定何时将新实例实例化的放大规则以及用于确定何时将终止现有实例的缩小规则。自动缩放组件624可以由在不同的服务器计算机602或其他计算装置上执行的许多子组件组成。自动缩放组件624可以监测内部管理网络上的可用计算资源并且基于需要而修改可用的资源。
[0089] 可以使用部署组件626来帮助顾客部署计算资源的新实例606。所述部署组件可以访问与所述实例相关联的账户信息,诸如谁是所述账户的拥有者、信用卡信息、拥有者的国家等。部署组件626可以接收来自顾客的配置,所述配置包括描述将如何配置新实例606的数据。举例来说,所述配置可以指定将要在新实例606中安装的一个或多个应用程序、提供为了配置新实例606而要执行的脚本和/或其他类型的代码、提供说明应用程序高速缓冲存储器将如何作好准备的高速缓冲存储器逻辑以及其他类型的信息。部署组件626可以利用顾客提供的配置和高速缓冲存储器逻辑来配置、预先准备好以及启动新实例606。所述配置、高速缓冲存储器逻辑和其他信息可以由顾客使用管理组件622或通过将此信息直接提供到部署组件626来指定。实例管理器可以被视为部署组件的部分。
[0090] 顾客账户信息628可以包括与多租户环境的顾客相关联的任何所要信息。举例来说,所述顾客账户信息可以包括顾客的独特标识符、顾客地址、计账信息、许可信息、用于启动实例的定制参数、排程信息、自动缩放参数、用于访问所述账户的先前IP地址、顾客可访问的MI和CHI的列表等。
[0091] 可以预留一个或多个服务器计算机630来执行用于管理配置数据到服务器计算机602的可配置硬件604的下载的软件组件。举例来说,服务器计算机630可以执行逻辑仓储服务,所述逻辑仓储服务包括摄入组件632、库管理组件634和下载组件636。摄入组件632可以接收主机逻辑和应用逻辑设计或规范并且产生可以用于配置可配置硬件604的配置数据。
库管理组件634可以用于管理源代码、用户信息以及与逻辑仓储服务相关联的配置数据。举例来说,库管理组件634可以用于将由用户的设计产生的配置数据存储在网络附加存储640上的由用户指定的位置。明确地说,所述配置数据可以存储在网络附加存储640上的可配置硬件图像642内。另外地,库管理组件634可以管理关于逻辑仓储服务的逻辑设计和/或用户的输入文件(诸如应用逻辑和主机逻辑的规范)和元数据的版本化和存储。库管理组件634可以按一个或多个性质(诸如,例如,用户标识符、实例类型、市场标识符、机器图像标识符以及可配置硬件标识符)对所产生的配置数据编索引。下载组件636可以用于鉴认对配置数据的请求并且在已鉴认了所述请求时将所述配置数据传输到请求者。举例来说,服务器计算机602A-B上的代理可以在启动使用可配置硬件604的实例606时向下载组件636发送请求。作为另一个实例,服务器计算机602A-B上的代理可以在实例606请求在可配置硬件604在操作中时部分地重配置可配置硬件604时向下载组件636发送请求。
[0092] 网络附加存储(NAS)640可以用于提供存储空间以及对存储在NAS 640上的文件的访问。举例来说,NAS 640可以包括用于使用网络文件共享协议(诸如网络文件系统(NFS))来处理请求的一个或多个服务器计算机。NAS 640可以包括可移动或不可移动的介质,包括磁盘、存储区域网络(SAN)、独立冗余磁盘阵列(RAID)、磁带或磁带盒、CD-ROM、DVD或可以用于以非暂时方式存储信息并且可以通过网络650访问的任何其他介质。
[0093] 可以使用网络650将服务器计算机602A-602C、服务器组件620和630以及存储装置640互连。网络650可以是局域网(LAN),并且可以连接到广域网(WAN)660使得终端用户可以访问计算服务提供者600。应了解,已简化了图6中所示的网络拓扑,并且可以利用更多个网络和网络装置来将本文中公开的各种计算系统互连。
[0094] 图7展示示例性系统700的其他细节,所述系统包括用于配置可配置硬件平台710并且与可配置硬件平台710介接的控制平面和数据平面的组件。所述控制平面包括用于初始化、监测、重配置以及拆开可配置硬件平台710的功能。所述数据平面包括用于在用户的应用程序与可配置硬件平台710之间通信的功能。所述控制平面可以由具有较高权限级别的用户或服务访问,并且所述数据平面可以由具有较低权限级别的用户或服务访问。在一个实施方案中,使用区域互连(诸如PCIe)将可配置硬件平台710连接到服务器计算机720。在可选实施方案中,可配置硬件平台710可以集成在服务器计算机720的硬件内。作为一个实例,服务器计算机720可以是图6的计算服务提供者600的多个服务器计算机602A-602B中的一者。
[0095] 服务器计算机720具有底层硬件722,包括一个或多个CPU、存储器、存储装置、互连硬件等。在硬件722上方运行的层是管理程序或内核层724。所述管理程序或内核层可以被分类为1类或2类管理程序。1类管理程序直接在主机硬件722上运行以控制所述硬件以及管理客户机操作系统。2类管理程序在常规的操作系统环境内运行。因此,在2类环境中,所述管理程序可以是在操作系统上方运行的不同的层,并且所述操作系统与系统硬件交互。不同类型的管理程序包括基于Xen的、Hyper-V、ESXi/ESX、Linux等,但可以使用其他管理程序。管理分区730(诸如Xen管理程序的域0)可以是管理程序的部分或与所述管理程序分离并且大体上包括需要用于访问硬件722的装置驱动器。用户分区740是在管理程序内的隔离的逻辑单元。可以给每个用户分区740分配硬件层的存储器、CPU分配、存储、互连带宽等的其自己的部分。另外地,每个用户分区740可以包括虚拟机以及其自己的客户机操作系统。因而,每个用户分区740是独立于其他分区的被指定用于支持其自己的虚拟机的容量的抽象部分。
[0096] 可以使用管理分区730来为用户分区740和可配置硬件平台710执行管理服务。管理分区730可以与计算服务提供者的网络服务(诸如部署服务、逻辑仓储服务750和健康状况监测服务)、用户分区740和可配置硬件平台710通信。所述管理服务可以包括用于启动和终止用户分区740并且配置、重配置和拆开可配置硬件平台710的可配置逻辑的服务。作为特定实例,管理分区730可以响应于来自部署服务(诸如图6的部署组件626)的请求而启动新的用户分区740。所述请求可以包括对MI和/或CHI的参考。所述MI可以指定载入到用户分区740上的程序和驱动器,并且CHI可以指定载入到可配置硬件平台710上的配置数据。管理分区730可以基于与MI相关联的信息来初始化用户分区740并且可以致使与CHI相关联的配置数据载入到可配置硬件平台710上。用户分区740与可配置硬件平台710的初始化可以同时进行,使得可以减少进行实例操作的时间。
[0097] 可以使用管理分区730来管理对可配置硬件平台710的编程和监测。通过使用管理分区730来实现此目的,可以限制对配置数据和可配置硬件平台710的配置端口的访问。具体地说,可以限制具有较低权限等级的用户直接访问管理分区730。因此,在不使用计算服务提供者的基础设施的情况下无法修改可配置逻辑,并且可以保护用于对可配置逻辑编程的任何第三方IP使之不会被未授权用户观看。
[0098] 管理分区730可以包括用于使控制平面配置可配置硬件平台710并且与所述可配置硬件平台介接的软件栈。所述控制平面软件栈可以包括用于与网络服务(诸如逻辑仓储服务750和健康状况监测服务)、可配置硬件平台710和用户分区740通信的可配置逻辑(CL)应用管理层732。举例来说,CL应用管理层732可以响应于启动了用户分区740而向逻辑仓储服务750发出取出配置数据的请求。CL应用管理层732可以使用硬件722的共享存储器或通过经由将服务器计算机720连接到可配置硬件平台710的互连发送和接收分区间消息来与用户分区740通信。具体地说,CL应用管理层732可以从可配置硬件平台710的邮箱逻辑711读取消息以及向所述邮箱逻辑写入消息。所述消息可以包括由终端用户应用程序741发出的重配置或拆开可配置硬件平台710的请求。CL应用管理层732可以响应于重配置可配置硬件平台710的请求而向逻辑仓储服务750发出取出配置数据的请求。CL应用管理层732可以响应于拆开可配置硬件平台710的请求而开始拆开序列。CL应用管理层732可以执行看门狗相关活动以确定通向用户分区740的通信路径是否运作。
[0099] 控制平面软件栈可以包括用于访问可配置硬件平台710的配置端口712(例如,配置访问端口)的CL配置层734,使得可以将配置数据载入到可配置硬件平台710上。举例来说,CL配置层734可以向配置端口712发送一个或多个命令以执行可配置硬件平台710的全部或部分配置。CL配置层734可以将配置数据(例如位流)发送到配置端口712,使得可以根据所述配置数据来对可配置逻辑进行编程。所述配置数据可以说明指定主机逻辑和/或应用逻辑。
[0100] 所述控制平面软件栈可以包括用于经由将服务器计算机720连接到可配置硬件平台710的物理互连来通信的管理驱动器736。管理驱动器736可以封装源自管理分区730的命令、请求、响应、消息和数据以便经由物理互连来传输。另外地,管理驱动器736可以对经由物理互连发送到管理分区730的命令、请求、响应、消息和数据解封装。具体地说,管理驱动器736可以与可配置硬件平台710的管理功能713通信。举例来说,管理功能713可以是在连接到物理互连的装置的枚举期间映射到地址范围的物理或虚拟功能。管理驱动器736可以通过将事务送往指派给管理功能713的地址范围来与管理功能713通信。
[0101] 控制平面软件栈可以包括CL管理和监测层738。CL管理和监测层738可以监测和分析在物理互连上发生的事务以确定可配置硬件平台710的健康状况和/或确定可配置硬件平台710的使用特性。举例来说,CL管理和监测层738可以监测配置数据是否成功地部署在可配置硬件平台710上并且可以导致指示所述部署的状态的报告传输到逻辑仓储服务750。
[0102] 可配置硬件平台710可以包括不可配置硬宏和可配置逻辑。所述硬宏可以在可配置硬件平台710内执行特定的功能,诸如输入/输出块(例如,串行化器和解串行化器(SERDES)块和兆位收发器)、模/数转换器、存储器控制块、测试访问端口以及配置端口712。可以通过将配置数据载入到可配置硬件平台710上来对可配置逻辑进行编程或配置。举例来说,可以使用配置端口712来载入配置数据。作为一个实例,配置数据可以存储在可由配置端口712访问的存储器(诸如快闪存储器)中,并且可以在可配置硬件平台710的初始化序列期间(诸如在上电序列期间)自动地载入配置数据。另外地,可以使用芯片外处理器或可配置硬件平台710内的接口来访问配置端口712。
[0103] 所述可配置逻辑可以被编程为包括主机逻辑和应用逻辑。所述主机逻辑可以对终端用户屏蔽至少一些硬宏的接口,使得终端用户具有对所述硬宏和物理互连的受限访问。举例来说,主机逻辑可以包括邮箱逻辑711、配置端口712、管理功能713、主机接口714以及应用功能715。终端用户可以致使可配置应用逻辑716载入到可配置硬件平台710上,并且可以与来自用户分区740的可配置应用逻辑716通信(经由应用功能715)。
[0104] 主机接口逻辑714可以包括用于在物理互连上传信并且实施通信协议的电路(例如硬宏和/或可配置逻辑)。所述通信协议说明了用于经由互连通信的规则和消息格式。应用功能715可以用于与用户分区740的驱动器通信。具体地说,应用功能715可以是在连接到物理互连的装置的枚举期间映射到地址范围的物理或虚拟功能。应用驱动器可以通过将事务送往指派给应用功能715的地址范围来与应用功能715通信。具体地说,应用功能715可以与应用逻辑管理驱动器742通信以经由控制平面交换命令、请求、响应、消息和数据。应用功能715可以与应用逻辑数据平面驱动器743通信以经由数据平面交换命令、请求、响应、消息和数据。
[0105] 邮箱逻辑711可以包括一个或多个缓冲器以及一个或多个控制寄存器。举例来说,给定的控制寄存器可以与特定缓冲器相关联,并且寄存器可以用作信号量以在管理分区730与用户分区740之间进行同步。作为特定实例,如果分区可以修改控制寄存器的值,那么所述分区可以对缓冲器进行写入。缓冲器和控制寄存器可以是可从管理功能713和应用功能715访问。当消息被写入到缓冲器时,可以对另一个控制寄存器(例如,消息就绪寄存器)进行写入以指示所述消息是完整的。可以由所述分区对消息就绪寄存器进行轮询以确定消息是否存在,或者可以响应于消息就绪寄存器被写入而产生中断并将所述中断传输到所述分区。
[0106] 用户分区740可以包括用于将终端用户应用程序740与可配置硬件平台710介接的软件栈。所述应用软件栈可以包括用于与控制平面和数据平面通信的功能。具体地说,应用软件栈可以包括用于使终端用户应用程序740能够访问可配置硬件平台710的CL-应用API 744。CL-应用API 744可以包括用于与可配置硬件平台710和管理分区730通信的方法或功能的库。举例来说,终端用户应用程序741可以通过使用CL-应用API 744的API来将命令或数据发送到可配置硬件逻辑716。明确地说,CL-应用API 744的API可以与应用逻辑(AL)数据平面驱动器743介接,所述应用逻辑(AL)数据平面驱动器可以产生以应用功能715为目标的事务,所述应用功能可以与可配置应用逻辑716通信。以此方式,终端用户应用程序741可以致使可配置应用逻辑716接收数据、处理数据以及用数据作出响应以潜在地加快终端用户应用程序741的任务。作为另一个实例,终端用户应用程序741可以通过使用CL-应用API 
744的API来将命令或数据发送到管理分区730。明确地说,CL-应用API 744的API可以与AL管理驱动器742介接,所述AL管理驱动器742可以产生以应用功能715为目标的事务,所述应用功能可以与邮箱逻辑711通信。以此方式,终端用户应用程序741可以致使管理分区730提供关于可配置硬件平台710的操作或元数据和/或请求重配置可配置应用逻辑716。
[0107] 所述应用软件栈与管理程序或内核724结合可以用于限制终端用户应用程序741可用于在物理互连上执行的操作。举例来说,计算服务提供者可以提供AL管理驱动器742、AL数据平面驱动器743以及CL-应用API 744(诸如通过将文件与机器图像相关联)。可以通过仅准许具有比终端用户高的权限级别的用户和服务对文件进行写入来保护这些组件不被修改。AL管理驱动器742和AL数据平面驱动器743可以被限于仅使用应用功能715的地址范围内的地址。另外地,输入/输出存储器管理单元(I/O MMU)可以将互连事务限制在应用功能715或管理功能713的地址范围内。
[0108] 图8是展示在包括逻辑仓储服务的多租户环境中运行的多个计算实例的实例的系统图。举例来说,计算服务提供者800可以将计算和存储能力作为服务提供给一群终端接收者。具体地说,计算服务提供者800可以支持多租户环境,其中多个顾客使用在为单个或多个顾客分配的服务器计算机上执行的不同的虚拟机实例来独立地操作。所述服务器计算机可以包括具有可配置硬件的可编程逻辑平台,所述可配置硬件是在不同顾客间共享和/或为单个顾客预留。
[0109] 基于网络的服务(例如,在服务器计算机830上执行并且可经由网络850访问的逻辑仓储服务832)可以被配置成管理来自与所述基于网络的服务通信的一群可编程逻辑平台的可配置硬件的实例的分配。作为一个实例,逻辑仓储服务832可以与该群服务器计算机802A-802C通信,该群服务器计算机分别与可编程逻辑平台804A-804C进行区域通信。在顾客请求计算资源时,可以由配给或部署服务(未图示)来分配服务器计算机802A-802C。当所述顾客请求包括对可配置硬件的请求时,逻辑仓储服务832可以将对应于所述请求的配置数据传输到指派给所述顾客的服务器计算机。
[0110] 作为特定实例,计算资源的包括服务器计算机802A和可编程逻辑平台804A的实例可以被分配给顾客A。可编程逻辑平台804A可以使用逻辑仓储服务832来配置而具有由主机逻辑壳806A封装的应用逻辑设计808A。可以基于应用逻辑设计808A来修改主机逻辑壳806A。举例来说,计算服务提供者800可以设计主机逻辑壳806A,使得其具有强制特征与可以由顾客启用或停用的任选特征。顾客A可以在应用逻辑设计808A的设计阶段期间定制主机逻辑壳806A(诸如通过启用或停用主机逻辑壳806A的不同特征),并且可以在为所述顾客分配计算资源时下载用于定制的主机逻辑壳806A的配置数据。
[0111] 作为另一个实例,计算资源的包括服务器计算机802B和可编程逻辑平台804B的实例可以被分配给顾客B。可编程逻辑平台804B可以使用逻辑仓储服务832来配置而具有由主机逻辑壳806B封装的应用逻辑设计808B。可以基于应用逻辑设计808B来修改主机逻辑壳806B,使得主机逻辑壳806B与主机逻辑壳806A不同。举例来说,主机逻辑壳806B可以具有与主体逻辑壳806A不同的被启用和/或停用的任选特征。
[0112] 作为另一个实例,在给顾客分配计算资源时,顾客可以被指派给同一个服务器计算机和可编程逻辑平台。明确地说,顾客C和D可以被指派给服务器计算机802C和可编程逻辑平台804C。可编程逻辑平台804C可以针对顾客C使用逻辑仓储服务832来配置而具有由主机逻辑壳806C封装的应用逻辑设计808C。类似地,可编程逻辑平台804C可以针对顾客D使用逻辑仓储服务832来配置而具有由主机逻辑壳806D封装的应用逻辑设计808D。主机逻辑壳806A-D可以基于相应顾客的相应应用逻辑而皆为不同的。主机逻辑壳806C可以与主机逻辑壳806D共享逻辑资源(例如,共享主机壳805)。作为一个实例,共享主机壳805可以是在可编程逻辑平台804C的初始化序列期间配置的静态逻辑,并且主机逻辑壳806C和806D可以是响应于来自相应顾客的请求而配置的可重配置逻辑。举例来说,共享主机壳805可以包括用于与服务器计算机802C通信的主机接口逻辑、用于重配置可编程逻辑平台804C的控制以及用于防止应用逻辑在未经过中间接口的情况下直接访问可编程逻辑平台804C的外部接脚的保护逻辑。
[0113] 另外地,可以针对不同顾客来重配置特定的计算资源。作为特定实例,当顾客B用完包括服务器计算机802B和可编程逻辑平台804B的计算资源时,可编程逻辑平台804B可以针对不同的顾客E使用逻辑仓储服务832来重配置而具有由不同的主机逻辑壳封装的不同的应用逻辑设计。具体地说,顾客E可以被指派给服务器计算机802B和可编程逻辑平台804B。可编程逻辑平台804B可以使用逻辑仓储服务832来配置而具有由顾客E所选择的主机逻辑壳封装的来自顾客E的应用逻辑设计。因此,可以在可编程逻辑平台804B的操作期间转变或改变主机逻辑壳,使得不同的顾客可以使用基于相应顾客的应用逻辑来修改的不同的主机逻辑壳。
[0114] 示例性方法
[0115] 图9是用于管理配置数据的示例性方法900的流程图,所述配置数据可以用于在(例如)多租户环境中对可配置硬件进行配置或编程。作为一个实例,可以使用诸如参看图1和图4到图5所描述的逻辑仓储服务来实施方法900。
[0116] 在910,可以接收使用可配置硬件的应用逻辑的规范来产生用于所述可配置硬件的配置数据的第一请求。所述应用逻辑的规范可以包括源代码(例如,HDL或RTL源代码)、网表和/或对应于应用逻辑的配置数据。所述请求可以指定与所述配置数据相关联的实例类型。所述请求可以包括指示可以访问所述配置数据的用户的访问列表。
[0117] 在915,可以从多个主机逻辑壳中选择特定的主机逻辑壳。举例来说,第一请求(来自910)可以包括对与所述应用逻辑一起使用的主机逻辑的版本的参考。所述主机逻辑的版本可以指代所述特定的主机逻辑壳的规范。另外地或可选地,所述第一请求可以指定在所述特定的主机逻辑壳内启用或停用的一组特征(例如,DMA引擎、加密引擎、压缩引擎、解压缩引擎等)。在配置所述可配置硬件时,可以使用所述特定的主机逻辑壳来封装所述应用逻辑,使得所述应用逻辑可以仅使用预定义和受保护的接口来与外部组件通信。
[0118] 在920,可以产生用于所述可配置硬件的配置数据。产生所述配置数据可以包括核实所述应用逻辑符合计算服务提供者的一个或多个标准、将所述应用逻辑集成到所述特定的主机逻辑壳中、综合所述应用逻辑和/或对所述应用逻辑进行放置和布线。所述配置数据可以包括用于在可配置硬件上实施应用逻辑和/或主机逻辑的数据。所述配置数据可以包括用于在所述可配置硬件的操作期间的一个或多个时间时实施多个组件的数据。举例来说,所述配置数据可以包括静态逻辑组件(将在可配置硬件的初始化序列期间载入)以及一个或多个可重配置组件(将在可配置硬件的初始化序列之后载入)。不同的可重配置组件可以与可配置硬件的重叠或非重叠区相关联。所述配置数据可以包括主机逻辑组件和/或应用逻辑组件。所述配置数据可以按一种或多种格式产生。作为一个实例,所述配置数据可以是完整的或部分的位流。还可以产生与所述配置数据相关联的信息。举例来说,日志文件、实施报告和定时报告可以与所述配置数据一起产生。所述实施报告和定时报告可以由开发者或设计系统使用来对所述可配置硬件的设计进行修改、重新综合以及重新放置和布线。
[0119] 在930,可以接收将所述配置数据下载到包括所述可配置硬件的主机服务器计算机的第二请求。举例来说,所述第二请求可以是针对在启动新的虚拟机实例时下载到所述可配置硬件的静态逻辑(诸如对于主机逻辑设计)。作为另一个实例,所述请求可以是针对在所述可配置硬件平台正在执行时下载到所述可配置硬件的可重配置逻辑。明确地说,所述请求可以是针对与应用逻辑设计和适于所述应用逻辑设计的主机壳的至少一部分(例如,以可配置硬件的可重配置区域为目标的部分)对应的配置数据。所述第二请求可以包括用于授权用户访问所述配置数据的信息。
[0120] 在940,可以响应于所述第二请求而将配置数据传输到主机服务器计算机,使得所述可配置硬件将被配置有所述应用逻辑以及适于所述应用逻辑的主机逻辑。明确地说,可以将所述配置数据传输到所述主机服务器计算机的管理分区,并且所述管理分区可以致使所述配置输入载入到所述可配置硬件上。作为一个实例,可以在核实请求者能够访问所述配置数据之后传输所述配置数据。
[0121] 在950,可以将硬件参考标识符与虚拟机标识符相关联。举例来说,所述第二请求(来自930)可以包括用于识别要下载的配置数据的虚拟机标识符。以此方式,使用虚拟机图像标识符部署虚拟机可以自动地请求在实例化所述虚拟机时下载与所述硬件参考标识符相关联的配置数据。
[0122] 图10是用于管理配置数据的示例性方法1000的流程图,所述配置数据可以用于在(例如)多租户环境中对可配置硬件进行配置或编程。举例来说,可以通过诸如上文参看图1和图4到图5所描述的逻辑仓储服务来实施方法1000。
[0123] 在1010,可以摄入所述可配置硬件的应用逻辑的第一规范。举例来说,所述应用逻辑可以由多租户计算服务提供者的顾客开发或批准。可以使用所述应用逻辑来为所述顾客执行特定的计算任务。所述规范可以包括HDL或RTL源代码、网表和/或针对应用逻辑的部分位流。
[0124] 在1015,可以从多个主机逻辑设计中选择特定的主机逻辑设计。可以基于所述应用逻辑设计而选择所述特定的主机逻辑设计。可以基于用户输入(诸如通过接收从菜单中作出的选择或通过在应用逻辑规范中使用编译指示)或在没有用户输入的情况下(诸如通过分析:应用逻辑所使用的资源的量、应用逻辑所使用的接口的存在或缺少、对加速器的参考的存在或缺少等)选择所述特定的主机逻辑设计。作为一个实例,给定主机逻辑设计的特征可以是可选择的,并且顾客可以选择对顾客更有益的特征并且排除不那么有益或在随所述应用程序一起包括时超过可配置逻辑的资源的特征。所述特征可以包括加速器、内部外围设备、外部外围设备、除错或测试逻辑、定时器、通信逻辑(例如,邮箱、信号量等)、监测逻辑(例如,性能计数器或跟踪逻辑)以及其他各种功能元件。可以使用HDL或RTL源代码、网表和/或针对主机逻辑的部分位流来说明主机逻辑设计。
[0125] 在1020,可以基于可配置硬件的应用逻辑设计以及特定的主机逻辑设计来产生配置数据。当所述规范包括源代码时,可以综合所述源代码以产生网表。可以对网表进行放置和布线以产生配置数据。所述配置数据可以格式化为各种格式,诸如识别所述可配置硬件的单独组件的编程或设置的位流。另外地,所述配置数据可以存储在数据库中。举例来说,配置数据可以存储在逻辑仓储数据库(诸如图1的逻辑仓储数据库150)中。所述配置数据可以与机器图像、用户、可配置硬件图像、产品代码或可以用于检索信息数据的任何其他信息相关联地存储。所述配置数据可以与第一和第二规范和/或与一组核实测试相关联地存储。所述配置数据可以与访问列表相关联地存储,使得可以由开发者和/或配置数据的终端用户访问所述配置数据。
[0126] 在1030,可以接收对配置数据的请求。举例来说,在将新实例部署在由计算服务提供者提供的计算资源内时,可以接收请求。作为另一个实例,可以响应于用户应用程序请求在所述应用程序的执行期间载入所述配置数据而接收所述请求。作为另一个实例,可以响应于开发者或计算服务提供者更新、观看或测试所述配置数据而接收所述请求。
[0127] 在1040,可以将所述配置数据传输给请求者。举例来说,可以在已核实了请求者的访问权限之后将所述配置数据传输给所述请求者。
[0128] 在1050,可以根据所述配置数据来配置可配置硬件。在被配置后,所述可配置硬件可以包括由主机逻辑设计和应用逻辑设计指定的功能。
[0129] 图11是用于对可编程逻辑平台进行编程的过程的示例性方法1100的流程图。在1110,可以在可编程逻辑平台的初始化序列期间用静态主机逻辑设计来配置所述可编程逻辑平台。举例来说,所述静态主机逻辑设计可以存储在本地存储器(例如,嵌入式快闪存储器或在与可编程逻辑平台直接通信的快闪存储器中)。所述初始化序列可以响应于例如检测到上电事件或重置条件而开始。所述初始化序列可以包括从存储器读取所述静态主机逻辑设计以及用所述静态主机逻辑设计来对可编程逻辑平台的可配置逻辑进行编程。所述初始化序列可以包括将所述可编程逻辑平台从编程状态转变到操作状态,使得所述可编程逻辑平台的可配置逻辑执行所述静态主机逻辑设计的功能。举例来说,所述可编程逻辑平台可以在用于静态逻辑的配置数据已被读取出本地存储器外而从所述编程状态转变为所述操作状态。转变到所述操作状态可以例如通过使重置信号失效或使可编程逻辑平台的编程信号失效来指示。用所述静态主机逻辑设计来配置可编程逻辑平台的可配置逻辑可以是用于将应用逻辑和可重配置主机逻辑载入到所述可配置逻辑上的必备条件。举例来说,所述静态主机逻辑设计可以包括用于通过网络直接地或经由直接地连接到所述网络的服务器计算机间接地与网络服务通信的主机接口。
[0130] 在1120,可以从网络服务接收配置数据。所述配置数据可以用于可编程逻辑平台的可重配置区。所述配置数据可以包括用于应用逻辑和可重配置主机逻辑的设计。可以基于所述应用逻辑来修改所述可重配置主机逻辑。所述可重配置主机逻辑和所述静态主机逻辑可以封装所述应用逻辑并且提供与所述可编程逻辑平台的外部接脚的接口。
[0131] 在1130,所述可编程逻辑平台的可重配置区可以被配置有所述配置数据,使得用基于所述应用逻辑的主机逻辑设计来对可编程逻辑平台进行编程。
[0132] 示例性计算环境
[0133] 图12绘示可以在其中实施所描述的创新的合适的计算环境1200的一般化实例。计算环境1200不意欲表明对使用或功能性的范围的任何限制,因为可以在各种通用或专用计算系统中实施所述创新。举例来说,计算环境1200可以是各种计算装置(例如,桌上型计算机、膝上型计算机、服务器计算机、平板计算机等)中的任一者。
[0134] 参看图12,计算环境1200包括一个或多个处理单元1210、1215以及存储器1220、1225。在图12中,此基础配置1230包括在虚线内。处理单元1210、1215执行计算机可执行指令。处理单元可以是通用中央处理单元(CPU)、专用集成电路(ASIC)中的处理器或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。举例来说,图12展示中央处理单元1210以及图形处理单元或协同处理单元1215。有形存储器
1220、1225可以是可由处理单元访问的易失性存储器(例如,寄存器、高速缓冲存储器、RAM)、非易失性存储器(例如,ROM、EEPROM、快闪存储器等)或所述两者的一些组合。存储器
1220、1225将实施本文中描述的一个或多个创新的软件1280以适合于由处理单元执行的计算机可执行指令的形式来存储。
[0135] 计算系统可以具有额外的特征。举例来说,计算环境1200包括存储装置1240、一个或多个输入装置1250、一个或多个输出装置1260以及一个或多个通信连接1270。诸如总线、控制器或网络等互连机构(未图示)将计算环境1200的组件互连。通常,操作系统软件(未图示)为在计算环境1200中执行的其他软件提供操作环境并且协调计算环境1200的组件的活动。
[0136] 有形存储装置1240可以是可移动或不可移动的,并且包括磁盘、磁带或磁带盒、CD-ROM、DVD或可以用于以非暂时方式存储信息并且可以在计算环境1200内访问的任何其他介质。存储装置1240存储用于实施本文中描述的一个或多个创新的软件1280的指令。
[0137] 输入装置1250可以是触摸输入装置,诸如键盘鼠标、笔、或轨迹球、语音输入装置、扫描装置或将输入提供到计算环境1200的另一个装置。输入装置1260可以是显示器、打印机、扬声器、CD-刻录机或提供来自计算环境1200的输出的另一个装置。
[0138] 通信连接1270使得能够通过通信介质与另一个计算实体通信。所述通信介质传送信息,诸如计算机可执行指令、音频或视频输入或输出或经调制数据信号中的其他数据。经调制数据信号是使其一个或多个特性以某类方式设置或改变以将信息编码在信号中的信号。举例来说并且非限制地,通信介质可以使用电的、光学的、RF或其他载体。
[0139] 虽然为了便于呈现而按特定的顺序次序描述了所公开方法中的一些方法的操作,但是应理解,此描述方式包括重新布置,除非通过下文陈述的特定语言来要求特定的排序。举例来说,顺序地描述的操作在一些情况中可以被重新布置或同时执行。此外,为简单起见,附图可能未展示所公开的方法可以与其他方法结合使用的各种方式。
[0140] 所公开的方法中的任一者可以实施为存储在一个或多个计算机可读存储介质(例如,一个或多个光学介质盘、易失性存储器组件(诸如DRAM或SRAM)、或非易失性存储器组件(诸如快闪存储器或硬盘驱动器))并且在计算机(例如,任何可市售的计算机,包括智能电话或包括计算硬件的其他移动装置)上执行的计算机可执行指令。术语计算机可读存储介质不包括通信连接,诸如信号和载波。用于实施所公开的技术的计算机可执行指令中的任一者以及在实施所公开的实施方案期间创建和使用的任何数据可以存储在一个或多个计算机可读存储介质上。所述计算机可执行指令可以是(例如)经由网络浏览器或其他软件应用程序(诸如远程计算应用程序)访问或下载的专用软件应用程序或软件应用程序的部分。此类软件可以例如在单个本地计算机(例如,任何合适的可市售计算机)上或在使用一个或多个网络计算机的网络环境(例如,经由因特网、广域网、区域网、客户端-服务器网络(诸如云计算网络)或其他此类网络)中执行。
[0141] 为清楚起见,仅描述基于软件的实现方式的某些所选方面。省去了本领域中众所周知的其他细节。举例来说,应理解,所公开的技术不限于任何特定的计算机语言或程序。举例来说,所公开的技术可以通过用C++、Java、Perl或任何其他合适的编程语言编写的软件来实施。同样地,所公开的技术不限于任何特定的计算机或特定类型的硬件。合适的计算机和硬件的某些细节是众所周知的并且在本公开中未详细地陈述。
[0142] 还应充分地理解,本文中描述的任何功能性可以至少部分地由一个或多个硬件逻辑替代软件来执行。举例来说并且未限制地,可以使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、系统芯片系统(SOC)、复杂可编程逻辑装置(CPLD)等。
[0143] 此外,可以通过合适的通信手段上传、下载或在远程访问基于软件的实施方案中的任一者(包括例如用于致使计算机执行所公开的方法中的任一者的计算机可执行指令)。此类合适的通信手段包括例如因特网、万维网、内联网、软件应用程序、缆线(包括光缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信或其他此类通信手段。
[0144] 所公开的方法、设备和系统决不应被理解为限制。而是,本公开针对各种公开的实施方案的所有新颖且非显而易见的特征和方面,单独地或彼此按各种组合和子组合。所公开的方法、设备和系统不限于任何特定的方面或特征或其组合,所公开的实施方案也不要求存在任何一个或多个特定的优点或解决问题。
[0145] 可以按照以下条目来描述所公开的实施方案中的至少一些:
[0146] 1.一种提供可配置硬件的方法,所述方法包括:
[0147] 接收产生用于现场可编程门阵列(FPGA)的配置数据的第一请求,所述第一请求包括对指定用于在所述FPGA上实施的应用逻辑的硬件设计的参考;
[0148] 从多个主机逻辑壳中选择特定的主机逻辑壳,所述特定的主机逻辑壳在配置所述FPGA时封装所述应用逻辑;
[0149] 基于所述应用逻辑和所述特定的主机逻辑壳来产生经验证的FPGA配置数据;
[0150] 接收将所述经验证的FPGA配置数据下载到所述计算环境的主机服务器计算机的第二请求,所述主机服务器计算机包括特定FPGA;以及
[0151] 响应于所述第二请求而将所述经验证的FPGA配置数据传输到所述主机服务器计算机,使得所述特定的FPGA被配置有所述特定的主机逻辑壳和所述应用逻辑。
[0152] 2.如条目1所述的方法,其中在配置所述FPGA时封装所述应用逻辑包括在所述应用逻辑与所述FPGA的外部接脚之间提供接口。
[0153] 3.如任一前述条目所述的方法,其中所述特定的主机逻辑壳体包括静态逻辑和可重配置逻辑,所述静态逻辑被配置成与所述可重配置逻辑分开载入,并且所述可重配置逻辑编码在所述经验证的FPGA配置数据中。
[0154] 4.如任一前述条目所述的方法,其中所述特定的主机逻辑壳是基于所述应用逻辑的要求而选择。
[0155] 5.如任一前述条目所述的方法,其中所述第二请求是基于在所述计算环境的所述主机服务器计算机上启动虚拟机的请求。
[0156] 6.如任一前述条目所述的方法,所述方法还包括:
[0157] 在所述计算环境的所述主机服务器计算机上启动虚拟机的实例;以及[0158] 使所述经配置的FPGA可供所述虚拟机的所述实例使用。
[0159] 7.一种逻辑仓储服务,所述逻辑仓储服务包括:
[0160] 用于摄入应用逻辑设计的规范以及从多个主机逻辑壳中选择特定的主机逻辑壳的装置,所述特定的主机逻辑壳是基于所述应用逻辑设计而选择,当在可配置硬件的实例上配置所述应用逻辑设计和所述特定的主机逻辑壳时,所述特定的主机逻辑壳封装所述应用逻辑设计;
[0161] 用于基于所述应用逻辑设计和所述特定的主机逻辑壳来产生配置数据的装置;以及
[0162] 用于响应于对所述配置数据的请求而经由网络将所述配置数据传输到服务器计算机的装置,所述服务器计算机包括所述可配置硬件的通过所述配置数据编程的所述实例。
[0163] 8.如条目7所述的逻辑仓储服务,其中所述特定的主机逻辑壳包括静态逻辑和可重配置逻辑。
[0164] 9.如条目8所述的逻辑仓储服务,其中所述特定的主机逻辑壳的所述静态逻辑包括是用于将所述特定的主机逻辑壳的所述可重配置逻辑以及所述应用逻辑载入到所述可配置硬件上的必备条件的逻辑。
[0165] 10.如条目9所述的逻辑仓储服务,其中所述特定的主机逻辑壳的所述静态逻辑包括用于与所述服务器计算机通信的主机接口逻辑。
[0166] 11.如条目8至10中任一项所述的逻辑仓储服务,其中所述特定的主机逻辑壳的所述静态逻辑使用所述多个主机逻辑壳共同的设计。
[0167] 12.如条目8至11中任一项所述的逻辑仓储服务,其中所述配置数据包括对用于所述应用逻辑的配置数据进行编码的第一部分位流以及对用于所述特定的主机逻辑壳的所述可重配置逻辑的配置数据进行编码的第二部分位流。
[0168] 13.如条目7至12中任一项所述的逻辑仓储服务,其中所述多个主机逻辑壳包括第一主机逻辑壳和第二主机逻辑壳,所述第一主机逻辑壳包括用于访问外围设备的逻辑,而所述第二主机逻辑壳不包括用于访问所述外围设备的所述逻辑。
[0169] 14.如条目7至12中任一项所述的逻辑仓储服务,其中用于产生所述配置数据的所述装置包括逻辑综合软件。
[0170] 15.如条目7至12中任一项所述的逻辑仓储服务,其中在配置所述可配置硬件的所述实例时封装所述应用逻辑包括阻止所述应用逻辑直接访问所述可配置硬件的所述实例的物理接脚。
[0171] 16.一种计算系统,所述计算系统包括:
[0172] 数据库,所述数据库存储多个主机逻辑设计;以及
[0173] 逻辑仓储服务,所述逻辑仓储服务在联接到所述数据库的第一服务器计算机上运行,所述逻辑仓储服务被配置成:
[0174] 摄入应用逻辑设计的规范;
[0175] 从所述多个主机逻辑设计中选择特定的主机逻辑设计,所述特定的主机逻辑设计是基于所述应用逻辑设计而选择;
[0176] 产生用于可配置硬件的配置数据,所述配置数据是基于所述应用逻辑设计和所述特定的主机逻辑设计;
[0177] 接收来自第二服务器计算机的对所述配置数据的请求;以及
[0178] 将所述配置数据传输到所述第二服务器计算机,所述第二服务器计算机包括所述可配置硬件的实例。
[0179] 17.如条目16所述的计算系统,其中所述特定的主机逻辑设计包括静态逻辑,所述静态逻辑是基于所述应用逻辑和所述特定的主机逻辑设计在与所述配置数据不同的时间时载入到所述可配置硬件的所述实例上。
[0180] 18.如条目17所述的计算系统,其中所述特定的主机逻辑设计的所述静态逻辑包括用于与所述第二服务器计算机通信的主机接口逻辑。
[0181] 19.如条目16至18中任一项所述的计算系统,其中所述特定的主机逻辑设计包括可重配置逻辑设计和静态逻辑设计,并且其中传输到所述第二服务器计算机的所述配置数据包括用于所述可重配置逻辑设计的配置数据并且不包括用于所述静态逻辑设计的配置数据,所述静态逻辑设计是从与所述可配置硬件的所述实例通信的存储器载入到所述可配置硬件的所述实例上。
[0182] 20.如条目16至19中任一项所述的计算系统,其中所述多个主机逻辑设计包括第一主机逻辑设计和第二主机逻辑设计,所述第一主机逻辑设计包括直接存储器存取(DMA)引擎,而所述第二主机逻辑设计不包括所述DMA引擎。
[0183] 鉴于可以应用所公开的发明的原理的许多以可能实施方案,应认识到所说明的实施方案只是本发明的实例并且不应被视为限制本发明的范围。我们将属于这些权利要求的范围内的所有事物主张为我们的发明。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈