联网可编程逻辑服务提供商的制作方法

文档序号:18190629发布日期:2019-07-17 05:34阅读:169来源:国知局
联网可编程逻辑服务提供商的制作方法

云计算是使用在远程位置可用并且可通过诸如因特网之类的网络访问的计算资源(硬件和软件)。在一些设置中,用户能够根据需要购买这些计算资源(包括存储和计算能力)作为实用程序。云计算采用用户的数据、软件和计算来委托远程服务。虚拟计算资源的使用可以提供许多优点,所述优点包括成本优势和/或快速适应变化的计算资源需求的能力。

通过使用协处理器可以加速一些计算,所述协处理器包括使用可重新配置逻辑实现的加速器(例如,在现场可编程门阵列(fpga)中)。fpga开发人员通常将带有专用接口的本地主计算机连接到本地fpga的外部引脚。在云计算环境中提供这样的加速器:所述加速器可能缺乏专门的硬件和安全特征,因此提供了充分的改进机会。

附图说明

图1是示出如可以在所公开的技术的某些示例中实现的包括可编程逻辑服务提供商的系统的示例的系统图。

图2是示出逻辑储存库服务的示例架构的系统图。

图3是概述如可以在所公开的技术的某些示例中实现的由可编程逻辑服务提供商启动的支持计算实例的示例系统的框图。

图4示出了如可以经由可编程逻辑服务提供商执行的摄取和生成配置数据的示例。

图5示出了图3的示例系统的另外的细节,包括用于配置和连接到可配置硬件平台的控制平面和数据平面的组件。

图6是概述如可以在所公开的技术的某些示例中执行的系统初始化的示例的序列图。

图7是概述如可以在所公开的技术的某些示例中执行的用可编程逻辑服务提供商加载比特流的示例方法的序列图。

图8是示出如可以在所公开的技术的某些示例中执行的访问fpga寄存器的示例的序列图。

图9是概述如可以在所公开技术的某些示例中执行的响应于在计算机网络上接收请求而编程可重新配置逻辑资源的方法的流程图。

图10是概述如可以在所公开的技术的某些示例中执行的在网络环境中编程fpga的示例方法的流程图。

图11是示出了如可以在所公开的技术的某些示例中实现的托管多租户环境的计算服务提供商的示例系统图。

图12示出了可以在图11的多租户环境中使用的管理组件。

图13是示出包括可编程逻辑服务提供商的在多租户环境中运行的多个虚拟机实例的示例系统图。

图14描绘了可以实现某些所描述的创新的合适计算环境的一般化示例。

具体实施方式

作为在通用计算资源中的选择,通过配置包括可配置逻辑平台的服务器计算机(诸如通过向服务器计算机提供包括现场可编程门阵列(fpga)的附加卡),可以在一组可重复使用的通用计算资源内提供专用计算资源。可配置逻辑是可以被编程或配置为执行由应用于可配置逻辑的配置数据指定的逻辑功能的硬件。例如,计算资源的用户可以提供规范(例如,在使用原理图捕获应用生成的网表中,或在由脚本生成的网表中,以硬件描述语言(例如,verilog、systemverilog和/或vhdl)或其他语言(例如,c、c++和/或systemc)编写)),用于配置可配置逻辑。可配置逻辑可以根据规范进行配置,并且配置的逻辑可以用于为用户执行任务。然而,允许用户访问计算设施的低级硬件可能潜在地在计算设施内引入安全性和隐私问题。

公开了一种可编程逻辑服务提供商,所述可编程逻辑服务提供商操作可编程逻辑服务,用于授权和映射客户对虚拟机的请求,以计算具有可重新配置逻辑设备资源的实例。可编程逻辑服务提供商控制对配置数据的访问,包括由第三方提供的配置数据。可编程逻辑服务可以作为基于web的服务来操作,例如托管在云中的基于web的服务,该服务将经由计算机网络接收的用户请求映射到包括可重新配置逻辑资源的计算实例。在一些示例中,可编程逻辑服务在与计算主机不同的物理服务器上实现,该计算主机通过可重新配置逻辑设备提供所分配的计算实例。在其他示例中,可编程逻辑服务提供商托管在同一计算主机上。在一些示例中,可编程逻辑服务使用包含在请求中的标识符来鉴定请求,并使用该标识符从联网数据库或联网存储产生配置信息。在一些示例中,指示符指示计算实例使用的机器图像。在一些示例中,指示符指示软件应用市场中的机器图像的产品代码。在一些示例中,指示符(例如,通过指示分配给虚拟实例的虚拟cpuid或mac地址)标识计算主机的虚拟实例的虚拟实例。在一些示例中,指示符(例如,通过指示分配给虚拟实例的实际cpuid或mac地址)标识计算主机的物理实例的物理实例。

在一些示例中,提供商在接收用可重新配置硬件来实现应用逻辑的请求之前分配计算实例。在一些示例中,提供商被配置为在启动实例的执行之前利用应用逻辑分配计算实例。在一些示例中,在生成配置数据之前启动计算实例。在其他示例中,配置数据在启动之前产生,并且启动动作包括在将计算实例提供给请求者(例如,用户)之前用所产生的配置数据编程可重新配置逻辑资源。在一些示例中,计算实例还可以重新编程耦合到计算主机的可重新配置逻辑设备的一部分,但不是全部。

如本文所述,计算服务设施可以包括各种计算资源,其中一种类型的计算资源可以包括包含可配置逻辑平台的服务器计算机(可选地称为主计算机)。可配置逻辑平台可以由计算机系统的用户编程或配置,使得计算资源的硬件(例如,可配置逻辑)由用户定制。例如,用户可以对可配置逻辑进行编程,使其充当紧密耦合到服务器计算机的硬件加速器。例如,硬件加速器可以经由服务器计算机的本地互连(诸如外围组件互连高速(pci-express或pcie)或ieee802.3(以太网)连接)来访问。用户可以在服务器计算机上执行应用,并且该应用的任务可以由硬件加速器使用pcie事务来执行。通过将硬件加速器紧密耦合到服务器计算机,可以减少加速器与服务器计算机之间的延迟,这可以潜在地提高应用的处理速度。

计算服务提供商可以使用诸如可编程逻辑服务提供商之类的软件服务来管理计算资源,以管理可配置硬件的配置和操作。作为一个示例,计算服务提供商可以执行逻辑储存库服务,以摄取用户的硬件或逻辑设计,生成用于基于用户的逻辑设计来配置可配置逻辑平台的经验证的配置数据,以及响应于配置可配置逻辑平台的实例的请求下载经验证的配置数据。配置数据可以包括用于在可配置逻辑平台上创建调试资源的数据,允许查看信号值,指示事件发生的触发器,性能计数器,以及用于监视可重新配置逻辑设备的其他合适的调试技术。下载请求可以来自开发逻辑设计的用户,也可以来自已获得使用逻辑设计许可的用户。因此,逻辑设计可以由可编程逻辑服务提供商、用户、或与用户或可编程逻辑服务提供商分开的第三方创建。例如,可以向计算服务提供商的用户提供加速器知识产权(ip)的市场,并且用户可以通过从市场选择加速器来潜在地提高其应用的速度。

图1是示出包括可编程逻辑服务提供商110的系统100的示例的系统图,该可编程逻辑服务提供商110提供用于访问可重新配置硬件资源120的配置和管理接口。例如,可编程逻辑服务提供商110可以用于在部署资源时管理到可配置计算资源120的配置数据的访问和部署。

可编程逻辑服务提供商110可以是网络可访问的服务,诸如web服务。web服务通常用于云计算。web服务是通过因特网、云或其他网络在网络地址处提供的软件功能。客户端向服务器发起web服务请求,并且服务器处理请求并返回适当的响应。通常使用例如api请求来发起客户端web服务请求。出于简化的目的,web服务请求在下文中通常将描述为api请求,但是应当理解,可以进行其他web服务请求。api请求是限定的请求-响应消息系统的编程接口,通常以json或xml表示,通过web——最常见的是通过基于http的web服务器来公开。因此,在某些实现中,可以通过一组超文本传输协议(http)请求消息连同响应消息的结构的限定来访问api,响应消息的结构的限定可以是可扩展标记语言(xml)或javascript对象表示法(json)格式。api可以指定执行动作的一组函数或例程,所述动作包括完成特定任务或允许与软件组件交互。当web服务从客户端设备接收api请求时,web服务可以生成对该请求的响应,并将响应发送到请求中标识的端点。附加地或替代地,web服务可以响应于api请求来执行动作,而不生成对请求中标识的端点的响应。

可编程逻辑服务提供商110可以接收api请求130以生成用于可配置硬件平台(诸如服务器计算机140的可配置硬件142)的配置数据。通常,可配置硬件142包括可重新编程逻辑设备,诸如现场可编程门阵列(fpga)、可配置可编程逻辑设备(cpld)、可编程逻辑设备(pld)和可编程存储器资源(例如,电可擦除可编程只读存储器(eeprom)或闪存)。在一些示例中,一些或所有可配置硬件是一次性可编程的。在一些示例中,用于可编程逻辑服务提供商110的功能全部或部分地使用服务器计算机140来实现,而在其他示例中,所述功能是利用与服务器计算机分开的计算机资源来实现的。在一些示例中,可编程逻辑服务提供商的一个实例可以管理多个不同物理和/或虚拟主机上的可配置硬件资源。在一些示例中,可编程逻辑服务提供商110提供域逻辑或以其他方式应用用于实例化、操作和终止计算实例的规则。例如,域逻辑可以限制对包括全部或部分可重新配置逻辑资源的计算实例的全部或一部分的访问,直到金融事务被处理。例如,可能需要开发者/合作伙伴在计算实例的操作之前或期间购买或租用计算实例或计算实例的各方面。在一些示例中,域逻辑可以基于请求者的属性诸如关联组织的身份、地理位置、或者请求者是否已经被充分鉴定和/或授权来限制访问。

api请求130可以由可编程逻辑服务提供商的开发者或合作伙伴用户发起。请求130可以包括用于指定关于逻辑设计、可配置硬件平台、用户信息、访问特权、生产状态的数据和/或元数据的字段,以及用于描述关于可编程逻辑服务提供商110的输入、输出和用户的信息的各种附加字段。作为具体示例,所述请求可以包括设计、生产状态(诸如试用或生产)、服务的输入或输出的加密状态、对用于存储输入文件(诸如硬件设计源代码)的位置的引用、输入文件的类型、可配置硬件的实例类型、以及对存储输出文件或报告的位置的引用。特别地,所述请求可以包括对指定用于在可配置硬件平台上实现的应用逻辑的硬件设计的引用。可以使用源代码文件(例如,以诸如systemc、systemverilog或vhdl之类的语言编写的硬件描述语言文件)和/或对包括用于编程可重新配置逻辑资源的比特流文件的配置数据的引用来指定硬件设计。当被编程到可配置硬件中时将用于控制应用逻辑的操作的主机逻辑从例如可编程逻辑服务提供商开发团队被接收。应用逻辑和/或主机逻辑的规范可以是文件(诸如源代码、由逻辑综合工具生成的网表、和/或由布局和路由工具生成的经布局和路由的逻辑门)的集合。源代码可以包括用硬件描述语言(hdl)、寄存器传输逻辑(rtl)语言或诸如开放计算语言(opencl)或c之类的高级语言编写的代码。

计算资源120可以包括按实例类型分类的许多不同类型的硬件和软件。特别地,实例类型指定资源的硬件和软件的至少一部分。例如,硬件资源可以包括:具有不同性能级别(例如,不同时钟速度、架构、高速缓存器大小等)的中央处理单元(cpu)的服务器;具有和不具有协处理器(诸如图形处理单元(gpu)以及可配置逻辑)的服务器;具有不同容量和性能的内存和/或本地存储的服务器;以及具有不同网络性能级别的服务器。示例软件资源可以包括不同的操作系统、应用程序和驱动程序。一个示例实例类型可以包括服务器计算机140,该服务器计算机140包括与可配置硬件142通信的中央处理单元(cpu)144。可配置硬件142可以包括例如可编程逻辑(诸如fpga)、可编程逻辑阵列(pla)、可编程阵列逻辑(pal)、通用阵列逻辑(gal)、或复杂可编程逻辑设备(cpld)。

可编程逻辑服务提供商110可以响应于接收api请求130而生成配置数据136。生成的配置数据136可以是基于应用逻辑和主机逻辑的。具体地,生成的配置数据136可以包括可以用于编程或配置可配置硬件142的信息,以便生成的配置数据136执行由应用逻辑和主机逻辑指定的功能。作为一个示例,可编程逻辑服务提供商可以生成包括用于在cpu144与可配置硬件142之间进行接口连接的逻辑的主机逻辑。在一些示例中,主机逻辑可以包括用于遮蔽或屏蔽应用逻辑(包括应用逻辑包括的任何调试功能)直接与cpu144通信,使得所有cpu应用逻辑事务都通过主机逻辑。以这种方式,主机逻辑可以潜在地降低可由应用逻辑引入的安全性和可用性风险。在其他示例中,应用逻辑可以经由接口(诸如pcie、以太网、infiniband(无限宽带)或其他合适接口)直接与cpu144通信。

生成配置数据136可以包括:对应用逻辑执行检查和/或测试、将应用逻辑集成到主机逻辑包装器中、合成应用逻辑、和/或对应用逻辑进行布局和路由。

生成配置数据136可以包括将应用逻辑和主机逻辑的源代码编译和/或转换为可以用于编程或配置可配置硬件142的数据。例如,可编程逻辑服务提供商110可以将应用逻辑集成到主机逻辑包装器中。具体地,可以在包括应用逻辑和主机逻辑的系统设计中实例化应用逻辑。集成的系统设计可以使用逻辑综合程序合成,以创建用于系统设计的网表。对于用于系统设计指定的实例类型,可以使用布局和路由程序对网表进行布局和路由。经布局和路由的设计可以转换为配置数据136,配置数据136可以用于对可配置硬件142进行编程。例如,配置数据136可以直接从布局和路由程序输出。

作为一个示例,生成的配置数据136可以包括用于配置fpga的全部或部分可配置逻辑的完整或部分比特流。fpga可以包括可配置逻辑和不可配置逻辑。可配置逻辑可以包括可编程逻辑块,所述可编程逻辑块包括组合逻辑和/或查找表(lut)和顺序逻辑元件(诸如触发器和/或锁存器)、可编程路由和时钟资源、可编程分布式和块随机存取存储器(ram)、数字信号处理(dsp)位片和可编程输入/输出引脚。可以使用配置逻辑(例如,配置访问端口)将比特流加载到可配置逻辑的片上存储器中。加载在片上存储器内的值可以用于控制可配置逻辑,使得可配置逻辑执行由比特流指定的逻辑功能。另外,可配置逻辑可以被划分为可以彼此独立地配置的不同分区或区域。作为一个示例,可以使用完整比特流来跨所有区域配置可配置逻辑,并且可以使用部分比特流来仅配置可配置逻辑区域的一部分。例如,用于主机逻辑部分和许多用户部分中的每一者的各个部分比特流:可以生成第一应用逻辑部分、第二应用逻辑部分等;下载到可配置硬件平台;并用于独立编程单个fpga的不同部分。因为可以独立地应用部分比特流,所以不需要将fpga的其他部分的详细知识提供给其他比特流,从而保护用户隐私。在一些示例中,可以使用加密来进一步保护一些或所有比特流。不可配置逻辑可以包括在fpga内执行特定功能的硬宏,诸如输入/输出块(例如,串行器和解串器(serdes)块和千兆位收发器)、模数转换器、存储器控制块、测试访问端口、以及用于将配置数据加载到可配置逻辑上的配置逻辑。

可编程逻辑服务提供商110可以将生成的配置数据136存储在逻辑储存库数据库150和/或逻辑配置存储155中。逻辑储存库数据库150和逻辑配置存储155可以包括用可移动或不可移动介质实现的存储,该可移动或不可移动介质包括磁盘、直连存储、网络附加存储(nas)、存储区域网络(san)、独立盘冗余阵列(raid)、磁带或盒式录音带、cd-rom、dvd、或可以用于以非暂时方式存储信息并且可以由可编程逻辑服务提供商110访问的任何其他介质。在一些示例中,配置数据被提供作为软件应用市场的一部分。另外,可编程逻辑服务提供商110可以提供用于使用可编程逻辑服务提供商110的接口,生成和存储输入文件(诸如用于应用逻辑和主机逻辑的规范)以及关于可编程逻辑服务提供商110的用户和/或逻辑设计的元数据。例如,生成的配置数据136可以由诸如用户标识符、一种或多种实例类型、市场标识符、机器图像标识符和可配置硬件标识符之类的一个或多个属性来索引。在一些示例中,可编程逻辑服务提供商110被配置为与逻辑储存库服务接合以管理配置数据。

可编程逻辑服务提供商110可以接收api请求160以下载配置数据。例如,当计算资源120的用户在计算资源120内启动或部署新实例(例如,“f1.small”实例)时,可以生成请求160。作为另一示例,可以响应于来自在操作实例上执行的应用的请求来生成请求160。请求160可以包括对源和/或目的地实例的引用,对要下载的配置数据(例如,实例类型、市场标识符、机器图像标识符或可配置硬件标识符)、用户标识符、授权令牌和/或用于识别要下载的配置数据和/或授权访问配置数据的其他信息的引用。如果请求配置数据的用户被授权访问配置数据,则可以从逻辑储存库数据库150检索配置数据,并且可以将经验证的配置数据162(例如,完整或部分比特流)下载到请求实例(例如,服务器计算机140)。经验证的配置数据162可以用于配置目标实例的可配置逻辑。

可编程逻辑服务提供商110可以验证可以将经验证的配置数据162下载到请求实例。验证可以由可编程逻辑服务提供商110在多个不同点处发生。例如,验证可以包括验证应用逻辑与主机逻辑兼容。特别是,可以在模拟器上执行测试的回归套件,以验证在将应用逻辑添加到设计之后主机逻辑按预期执行。附加地或替代地,可以验证应用逻辑被指定仅驻留在与主机逻辑的可重新配置区域分开的可重新配置区域中。作为另一示例,验证可以包括验证经验证的配置数据162与要下载的实例类型兼容。作为另一示例,验证可以包括验证请求者被授权访问经验证的配置数据162。如果验证检查中的任一者失败,则可编程逻辑服务提供商110可以拒绝下载经验证的配置数据162的请求。因此,可编程逻辑服务提供商110可以潜在地保护计算资源120的安全性和可用性,同时使用户能够定制计算资源120的硬件。

如上所述,在一些示例中,上面针对可编程逻辑服务提供商110描述的操作可以使用服务器计算机140、使用计算资源120内的其他资源、或者使用除计算资源120之外的其他资源来执行。

图2是示出逻辑储存库服务205的示例架构200的系统图。逻辑储存库服务205可以是在由可编程逻辑服务提供商管理的服务器计算机上执行的软件。可以通过一个或多个webapi访问逻辑储存库服务205。例如,可编程逻辑服务提供商110可以经由api与逻辑储存库服务205交互,包括将某些命令从用户传递到逻辑储存库服务。

逻辑储存库服务205可以包括用于服务来自可编程逻辑服务提供商110的api请求的提供商接口210。提供商接口210可以用于鉴定来自计算服务提供商的代理的请求,诸如通过使用请求中提供的凭证来鉴定请求者的身份。提供商接口210可以提供主机逻辑摄取功能215。特别地,提供商接口210可以接收将主机逻辑设计上载到逻辑储存库服务205的请求,并且该请求可以由主机逻辑摄取功能215处理。如前所述,主机逻辑可以包括用于沙箱化该应用逻辑的逻辑,以维持计算资源的安全性和可用性。另外,主机逻辑可以进一步分为静态逻辑和可重新配置逻辑。可以在初始化序列期间(例如,在引导时间)配置静态逻辑,而可以在可配置逻辑的操作期间的不同时间配置可重新配置逻辑。作为一个示例,pciexpress接口可以指定在重置信号被再次显现之后大约一百毫秒内引导和枚举pci端点。主机逻辑可以分为可以在分配的时间窗口内加载的静态逻辑,以及可以在时间窗口过去之后加载的可重新配置逻辑。静态逻辑可以用作不同可重新配置区域之间的接口。

可以使用hdl源代码指定主机逻辑设计,例如,使用systemverilog、verilog或vhdl编写。hdl源代码可以加密或不加密。在一些示例中,除了hdl源代码之外或代替hdl源代码,可以提供描述逻辑组件的网表。主机逻辑摄取模块215可以用于对接收的主机逻辑设计执行检查,解密主机逻辑设计,和/或提供主机逻辑设计的版本控制信息。另外,该请求可以包括用于将主机逻辑设计与一个或多个实例类型相关联的信息。例如,一些主机逻辑设计可以仅与实例类型的一个子集一起工作,而其他主机逻辑设计可以仅与实例类型的不同子集一起工作。

逻辑储存库服务205可以包括用于服务来自逻辑储存库服务205的用户的api请求的客户-开发者接口220。客户-开发者接口220可以用于鉴定来自计算服务提供商的用户的请求,诸如通过使用请求中提供的凭证来鉴定请求者的身份。例如,可以向每个用户提供可以用于识别用户以进行访问管理、计费和使用跟踪的帐户。用户可以限于仅查看和修改他们被授权访问的逻辑设计。例如,可以防止用户上载和/或修改主机逻辑。

客户-开发者接口220可以包括用于接收和/或处理应用逻辑设计的应用逻辑摄取功能225。可以使用源代码(例如,以systemverilog、verilog、c、systemc或其他合适的描述语言表示的hdl语言代码)、包括可配置逻辑块的列表和可配置逻辑块之间的连接和/或配置数据的网表来指定应用逻辑设计。例如,hdl代码可以描述虚拟调试单元的实例化,然后通过包括开发源代码的工程师不可访问的专有网表来将该hdl代码缝合到配置数据中。作为另一示例,配置数据可以包括在上载到逻辑储存库服务之前已经针对至少某些部分预编译的完整或部分比特流。应用逻辑将与主机逻辑(诸如通过配置数据生成块230)组合以创建可以加载到可配置硬件平台上的逻辑。处理应用逻辑设计可以包括:将源代码翻译和/或编译为较低级格式(例如,编译opencl以生成行为或结构verilog);验证存在所需的逻辑和/或信号(例如到主机逻辑的接口信号);验证不存在已知的受限电路(诸如环形振荡器);以及准备用于生成配置数据的其他各种任务。

客户-开发者接口220可以接受来自用户的各种类型的请求。作为一个示例,用户可以请求创建可配置硬件图像(chi)。chi可以提供用于在计算环境内配置可配置硬件的实例的信息。例如,chi可以包括一个或多个兼容的实例类型、用于配置可配置硬件的配置数据、用于控制对chi的访问的访问许可、以及与配置可配置硬件相关联的任何其他信息。创建chi的请求可以包括设计描述或标题的字段、设计的生产状态、设计是否加密、用于设计的源代码的引用、源代码指示器的类型、与配置数据兼容的一种或多种实例类型、以及对存储报告信息的位置的引用。

配置数据生成块230可以用于创建对可重新配置逻辑设备进行编程的配置数据。例如,配置数据可以基于应用逻辑设计和主机逻辑设计。作为另一示例,配置数据可以仅基于应用逻辑设计或仅基于主机逻辑设计。特别地,配置数据生成块230可以仅基于主机逻辑设计生成静态逻辑。另外,配置数据生成块230可以为可配置逻辑的一个或多个可重新配置区域生成可重新配置逻辑。例如,配置数据生成块230可以用于为主机功能保留的区域生成主机可重新配置逻辑。作为另一示例,配置数据生成块230可以用于生成主要为应用功能保留的区域的应用可重新配置逻辑。

配置数据生成块230的输入可以是应用逻辑设计(诸如来自应用逻辑摄取225)、主机逻辑设计(诸如来自主机逻辑摄取215)、和/或描述各种实现细节的约束(诸如时钟频率、分区信息、布局信息、目标技术等等)。逻辑设计可以包括使用hdl、网表和/或配置数据描述的源代码。配置数据生成块230可以将应用设计和主机设计组合成一个设计以创建配置数据。如参考图3更详细地描述的那样,配置数据生成块230可以包括逻辑综合工具和布局和路由工具。使用这些工具,配置数据生成块230可以创建用于在可配置硬件平台上加载的配置数据。

可以使用逻辑库管理块240来管理来自配置数据生成块230的输出。例如,逻辑库管理块240可以将用户信息与配置数据相关联,并将该信息存储在逻辑储存库数据库250中。

计算服务接口260可以用作逻辑储存库服务205与计算资源之间的接口。例如,当在计算资源上创建实例时,可以将api请求发送到计算服务接口260,并且可以将配置数据下载到请求资源。静态逻辑下载组件265可以用于将静态逻辑下载到请求实例上的可配置硬件平台。另外,请求可以用于可重新配置逻辑,并且可重新配置逻辑下载组件264可以用于服务该请求。具体地,可重新配置逻辑下载可以经由逻辑库管理块240通过逻辑储存库数据库250检索配置数据。该请求可以是用于可重新配置主机逻辑或用于可重新配置应用逻辑。

图3是进一步详述如可以在所公开技术的某些示例中使用的包括cpu144和可配置硬件142的服务器计算机140的示例的框图300。如图所示,可配置硬件142包括已被编程为实现主机逻辑310和应用逻辑320的可重新配置逻辑设备。主机逻辑310可以包括静态逻辑和动态逻辑,静态逻辑通常不经常被重新编程,动态逻辑通常更频繁地被重新编程。例如,每次重新编程或修改应用逻辑320时,可以重新配置动态逻辑。应用逻辑320可以用于实现功能加速器,该功能加速器是已经配置的可重新配置硬件,以加速指定由应用逻辑320执行的功能的计算。可配置硬件142可以包括例如与系统的不同用户通信的多个应用逻辑部分。在一些示例中,应用逻辑部分可以独立于其他应用逻辑部分而被重新编程。例如,如果在单个fpga集成电路上包括两个或更多个应用逻辑部分,则可以部分地重新配置fpga的任何其他部分,以仅重新编程所选择的应用逻辑部分之一。在一些示例中,部分地基于编程粒度和目标fpga的特征来选择fpga部分。例如,可以通过将fpga中的阵列逻辑组件的行范围或列范围分配给不同部分来创建fpga部分。

对于图3中所示的示例,主机逻辑310与在cpu144上执行的管理者模式进程315相关联。管理者模式进程315以比cpu的其他进程更高的特权级别执行。例如,服务器计算机140的管理员可以是具有足够权限来使用或控制管理者模式进程315的唯一实体。cpu144还可以托管被称为fpgad316的fpga服务(或守护进程)。fpgad是控制对于可配置硬件的操作和维护功能的轻量级服务。

应用逻辑320与对应的用户模式进程325相关联。用户模式进程具有比管理者模式进程315更低的权限级别,且因此除管理员之外,其他用户可以控制和使用用户模式进程。在一些示例中,可编程逻辑服务提供商110由计算主机cpu144托管。在其他示例中,可编程逻辑服务提供商110由经由网络接口360访问计算主机服务器计算机140的单独服务器提供。例如,以太网、802.11无线协议、虚拟专用网络、因特网和其他合适的计算机网络可以向可编程逻辑服务提供商110发送消息以及从可编程逻辑服务提供商110发送消息。

可配置硬件142(例如,如在fpga中)可以使用配置端口330来编程,配置端口330可以用于对主机逻辑310和应用逻辑两者进行编程。在所示的示例中,主机逻辑310具有专用输入/输出(i/o)端口335,该专用输入/输出(i/o)端口335能够从应用逻辑320(以及来自主机逻辑本身的数据)接收数据以及向应用逻辑320发送数据、以及能够经由接口350从cpu144接收数据以及向cpu144发送数据。在替代示例中,另一个i/o端口336可以绕过主机逻辑310直接在应用逻辑320与cpu144之间发送数据。接口350可以用任何合适的互连技术(包括但不限于:pcie、以太网和infiniband)来实现。每个应用逻辑部分使用接口350的不同保留部分,以与其相关的用户模式进程通信。例如,可以允许每个用户模式进程访问不同范围的存储器地址,并且主机逻辑310又将每个单独的应用逻辑部分仅耦合到与其对应进程相关联的存储器地址范围。类似地,管理者模式进程315可以经由另一个受限制的存储器范围耦合到主机逻辑310。在其他示例中,来自应用逻辑320的数据经由主机逻辑i/o端口335而不是通过单独的i/o端口发送到cpu144。

在一些示例中,耦合到主机逻辑310和/或应用逻辑部分320的每个进程都与在由cpu144托管的不同虚拟机中执行的进程相关联。在其他示例中,两个或更多个进程可以在同一虚拟机内执行。

图4示出了可以由逻辑储存库服务执行的摄取逻辑设计和生成配置数据的示例流程400。在摄取410期间,应用逻辑405和主机逻辑406的描述可以由可编程逻辑服务提供商接收。逻辑设计可以诸如通过使用ieee1735-2014加密标准来被加密。逻辑设计可以在摄取410期间或在流程400的后续步骤期间被解密。

作为一个示例,可以在摄取410期间接收应用逻辑405的源代码,并且可以将应用逻辑和调试单元逻辑组合成设计以产生用于逻辑综合420来编程可重新配置逻辑设备的第一部分的源代码。主机逻辑406的源代码可以用于产生用于逻辑综合420来编程可重新配置逻辑设备的第二部分的源代码。逻辑综合420可以用于基于目标技术将在行为和/或结构rtl中编写的规范转换为网表。例如,逻辑综合420可以瞄准不同的可配置逻辑技术,诸如具有不同架构、制造工艺、容量和/或制造商的fpga。网表可以包括许多可配置逻辑块、不可配置块(例如,硬或软宏)、以及不同块之间的连接。网表可以是逻辑网表,其中网表的块被枚举但在目标技术中未被布局。网表可以用作对于布局和路由440的输入。布局和路由440可以从网表和路由信息中获取可配置块的实例,并将该块映射到物理、可重新配置逻辑设备。经布局和路由的设计可以包括网表的每个逻辑组件的物理映射。附加地或替代地,可以对布局和路由440进行定时驱动,以基于设计的定时约束和物理设备的物理约束来修改网表。布局和路由440的输出可以是配置数据,诸如比特流图像。配置数据可以被分区或分成不同的组件。例如,配置数据可以包括与静态主机逻辑(例如,静态逻辑)、可重新配置主机逻辑(例如,动态可重新配置逻辑)、和/或可重新配置应用逻辑(例如,应用逻辑320)相关联的数据。不同的组件可以重叠或不重叠。例如,静态主机逻辑可以通过可重新配置应用逻辑使用的区域进行路由。因此,用于可重新配置应用逻辑的部分比特流还可以包括静态主机逻辑的部分。

作为另一示例,可以在摄取410期间接收应用逻辑和/或主机逻辑的网表。作为具体示例,可以为应用逻辑接收网表,并且可以为主机逻辑接收源代码。在这种情况下,主机逻辑可以与逻辑综合420合成以生成主机逻辑的网表,并且主机逻辑和应用逻辑的网表可以组合成单个设计以产生用于布局和路由440的网表。作为另一示例,可以在摄取410期间接收用于应用逻辑和/或主机逻辑的配置数据。例如,可以接收用于应用逻辑设计的部分比特流,或者可以接收用于主机逻辑和应用逻辑设计的完整比特流。

作为另一示例,定时报告可以提供示出设计是否满足可配置硬件的定时规范的静态定时分析。逻辑综合420以及布局和路由440可以涉及随着工具的每次运行而变化的随机的非确定性步骤,使得逻辑综合420以及布局和路由440的每次运行可以提供不同的结果。因此,如果开发者具有不满足定时的设计(如定时报告所示),则开发者可能希望重新运行逻辑综合420和/或布局和路由440。通过这种方式,开发人员可以通过为同一设计执行多个综合和路由运行来迭代他们的设计。

库管理和验证450功能可以用于在开发和部署步骤期间的各个点处验证用于可配置逻辑的用户设计。作为一个示例,验证450可以包括执行模拟以验证应用逻辑是否与主机逻辑兼容,使得主机逻辑可以约束应用逻辑的功能。验证450可以包括比较应用逻辑的网表以及确认应用逻辑满足可配置硬件平台的容量和区域限制。例如,可以限制应用逻辑仅使用一个或多个可重新配置区域内的逻辑。如果应用逻辑位于这些区域之外,则可以拒绝该应用逻辑。另外,可以将该应用逻辑作为比特流摄取,并且可以通过验证450来验证比特流。比特流的验证可以包括将对应于主机逻辑的摄取比特流数据的一部分与主机逻辑的基线版本进行比较,以确认主机逻辑未被破坏。从验证450的输出可以是有效的配置数据。

图5示出了包括用于配置和接合到可配置硬件平台510的控制平面和数据平面的组件的示例系统500的另外的细节。控制平面包括用于初始化、监视、重新配置和拆除可配置硬件平台510的功能。数据平面包括用于在用户的应用和可配置硬件平台510之间进行通信的功能。控制平面可以由具有较高特权级别的用户或服务访问,并且数据平面可以由具有较低特权级别的用户或服务访问。在一个示例中,可配置硬件平台510使用诸如pcie之类的本地互连而连接到服务器计算机540。在一些示例中,使用不同的互连,诸如以太网或infiniband。在替代示例中,可配置硬件平台510可以集成在服务器计算机540的硬件内。作为一个示例,服务器计算机540可以是图11的计算服务提供商1100的多个服务器计算机1102a-1102c中的一个。

主机服务器计算机540具有底层硬件542,底层硬件542包括一个或多个cpu、存储器、存储设备、互连硬件等。在硬件542上方运行层是管理程序或内核层544。管理程序或内核层可以分类为类型1或类型2管理程序。类型1管理程序直接在主机硬件542上运行以控制硬件和管理客户操作系统。类型2管理程序在传统的操作系统环境中运行。因此,在类型2环境中,管理程序可以是在操作系统上方运行的不同层,并且操作系统与系统硬件交互。不同类型的管理程序包括xen-based、hyper-v、esxi/esx、linux等,但也可以使用其他管理程序。管理分区550(诸如xen管理程序的域0)可以是管理程序的一部分或者与管理程序分离,并且通常包括访问硬件542所需的设备驱动器。管理分区550可以托管可以访问主机逻辑520的特权部分的管理者特权级别进程,并且根据特定配置,还可以访问应用逻辑530的一个或多个部分。

诸如用于在可配置硬件平台510上配置fpga的比特流之类的配置数据可以高速缓存在比特流高速缓存器546中,这可以使用例如耦合到主机服务器计算机的存储器或存储设备来实现。在第一次将比特流存储在比特流高速缓存器546中之后,可以使用高速缓存的比特流多次重新编程可配置硬件平台,从而避免通过网络存储传输配置数据的开销。

用户主机分区560是管理程序内的逻辑隔离单元。每个用户分区560可以被分配其自己的硬件层的存储器、cpu分配、存储、互连带宽等的部分。另外,每个用户分区560可以包括虚拟机和它自己的客户操作系统。这样,每个用户分区560是被设计为独立于其他分区来支持其自己的虚拟机的容量的抽象部分。用户主机分区560以比管理分区550(例如xen管理程序的域u)更低的特权级别执行。每个用户主机分区560可以包括可以访问应用逻辑530的关联部分的用户特权级别进程。

管理分区550可以用于执行用户主机分区560和可配置硬件平台510的管理服务。管理分区550可以与计算服务提供商、用户主机分区560、和可配置硬件平台510的web服务(诸如部署服务、逻辑储存库服务和健康监控服务)通信。管理服务可以包括用于启动和终止用户主机分区560的服务,以及配置、重新配置和拆除可配置硬件平台510的可配置逻辑的服务。作为特定示例,管理分区550可以响应于来自部署服务(诸如图11的部署组件1126)的请求来启动新用户分区560。该请求可以包括对机器图像(mi)和/或可配置硬件图像(chi)的引用。该mi可以指定要加载在用户分区560上的程序和驱动器,并且chi可以指定要加载在可配置硬件平台510上的配置数据。管理分区550可以基于与mi相关联的信息来初始化用户分区560,并且可以使与chi相关联的配置数据被加载到可配置硬件平台510上。用户分区560和可配置硬件平台510的初始化可以同时发生,从而可以减少使实例运行的时间。

管理分区550可以用于管理可配置硬件平台510的编程和监视。管理分区550还可以用于向可配置硬件平台510发送调试数据和从可配置硬件平台510接收调试数据。通过将管理分区550用于这些目的,可以限制对可配置硬件平台510的配置数据和配置端口的访问。具体地,可以限制具有较低特权级别的用户直接访问管理分区550。此外,可以限制具有较低特权级别的用户访问其他用户主机分区。因此,在不使用可编程逻辑服务提供商的基础架构的情况下不能修改可配置逻辑,并且可以保护用于编程可配置逻辑的任何第三方ip免于被未授权用户查看。此外,还防止未授权用户向可配置硬件平台510上的未授权分区发送调试数据或从可配置硬件平台510上的未授权分区接收任何调试数据。

管理分区550可以包括用于控制平面的软件栈,以配置和接合到可配置硬件平台510。控制平面软件栈可以包括被称为“fpgad”的服务进程551(例如,unix守护进程或windows服务)。fpgad服务进程551提供可以使用简单的c语言函数和结构访问的命令接口,且因此使用最小的消息解析。在其他示例中,fpgad服务进程可以包括其他更复杂的接口。fpgad服务进程可以使用从可编程逻辑服务提供商接收的配置逻辑来转发要执行的操作的请求,并返回由执行这些操作而生成的响应。例如,服务进程可以使用特权域邮箱请求/响应通信信道,每个fpga集成电路一个信道,以传输请求和响应。在一些示例中,fpgad服务进程在服务请求和响应方面是无状态的。在一些示例中,fpgad服务进程可以并行地监督fpga比特流的下载和管理,并为多租户环境提供安全和隔离的环境,其中不止一个不同的用户在计算实例上共享可重新配置资源。在一些示例中,服务进程使用pcie存储器映射的i/o来编写用于对fpga进行编程的比特流。fpgad服务进程可以更新可重新配置逻辑设备的任何可配置逻辑,包括静态逻辑、可重新配置逻辑和其他逻辑资源。例如,fpgad服务进程可以实现为unix守护进程或windows服务。

控制平面软件栈还可以包括用于与web服务(诸如可编程逻辑服务提供商110、逻辑储存库服务或健康监视服务)通信的可配置逻辑(cl)应用管理层552、可配置硬件平台510、以及用户主机分区560。例如,fpgad服务进程551可以响应于正在启动的用户分区560向可编程逻辑服务提供商110发出请求以获取配置数据。fpgad服务进程551可以使用硬件542的共享存储器而与用户分区560通信,或者通过发送和接收关于将服务器计算机540连接到可配置硬件平台510的互连的分区间消息而与用户分区560通信。具体地,fpgad服务进程551可以读取和写入可配置硬件平台510的邮箱逻辑521的消息。该消息可以包括最终用户应用561对重新配置或拆除可配置硬件平台510的请求。fpgad服务进程551可以响应于重新配置可配置硬件平台510的请求向可编程逻辑服务提供商110发出请求以获取配置数据。fpgad服务进程551可以响应于拆除可配置硬件平台510的请求来开启拆除序列。fpgad服务进程551可以执行监察者相关活动以判定到用户分区560的通信路径是否有效。

控制平面软件栈可以包括用于访问可配置硬件平台510的配置端口522(例如,配置访问端口)的cl配置层554,使得配置数据可以被加载到可配置硬件平台510上。例如,fpgad服务进程551可以向cl配置层554发送消息或命令,cl配置层554又将一个或多个命令发送到配置端口522以执行可配置硬件平台510的完全或部分配置。cl配置层554可以将配置数据(例如,比特流)发送到配置端口522,使得可以根据该配置数据对可配置逻辑进行编程。该配置数据可以指定主机逻辑和/或应用逻辑。

控制平面软件栈可以包括用于通过将服务器计算机540连接到可配置硬件平台510的物理互连进行通信的管理驱动器556。管理驱动器556可以封装用于通过物理互连进行传输的源自管理分区550的命令、请求、响应、消息和数据。另外,管理驱动器556可以解封装通过物理互连发送到管理分区550的命令、请求、响应、消息和数据。具体地,管理驱动器556可以经由主机接口514与可配置硬件平台510的主机逻辑520通信。例如,管理驱动器556可以在连接到物理互连的设备的枚举期间访问映射到地址范围的物理或虚拟功能。例如,在pcie实现中,管理驱动器556可以通过将事务寻址到并分配地址范围来与主机逻辑520通信。

控制平面软件栈可以包括cl管理和监视层558。该cl管理和监视层558可以监视和分析在物理互连上发生的事务以判定可配置硬件平台510的健康状况和/或判定可配置硬件平台510的使用特性。例如,cl管理和监视层558可以监视配置数据是否成功地部署在可配置硬件平台510上,并且可以使报告被发送到指示部署状态的逻辑储存库服务。

可编程逻辑服务提供商110可以用于将配置数据575发送到管理分区550。配置数据575可以被验证,且然后用于编程应用逻辑530的一部分(例如,一个或多个可配置逻辑分区)。可编程逻辑服务提供商110还可以向管理分区发送命令以启动编程分区的操作。可配置硬件平台510可以包括不可配置的硬宏和可配置逻辑。该硬宏可以在可配置硬件平台510内执行特定功能,诸如输入/输出块(例如,串行器和解串器(serdes)块和千兆位收发器)、模数转换器、存储器控制块、测试访问端口、和配置端口522。可配置逻辑可以通过将配置数据加载到可配置硬件平台510上来编程或配置。例如,配置端口522可以用于加载配置数据。作为一个示例,配置数据可以存储在由配置端口522可访问的存储器(诸如闪存或eeprom存储器)中,并且配置数据可以在可配置硬件平台510的初始化序列期间(诸如在通电序列期间)自动加载。另外,可以使用片外处理器或可配置硬件平台510内的接口来访问配置端口522。

可配置逻辑可以被编程为包括主机逻辑520和应用逻辑530。在多租户实现中,主机逻辑520可以将至少一些硬宏的接口与最终用户屏蔽,使得最终用户具有对硬宏和对物理互连的受限的访问。例如,主机逻辑可以限制用户主机分区560的访问以仅访问其在应用逻辑530内的相关一个或多个可配置逻辑分区。在pcie背景中,这可以通过将不同的用户主机分区分配给不同的存储器地址范围来实现,通过配置基址寄存器(bar)来为主机分区和可配置逻辑分区的某些组合保留某些存储器地址范围。

应用逻辑530可以包括硬宏和可配置逻辑两者。应用逻辑530可以被分区为两个或更多个部分,并且每个部分可以被分配给一个或多个用户主机分区。主机逻辑520拒绝每个可配置逻辑分区访问可配置硬件平台的其他分区。主机逻辑520还可以耦合到邮箱逻辑521、配置端口522、主机接口514和应用逻辑530。主机接口逻辑514可以包括用于在物理互连上发信号并实现通信协议的电路(例如,硬宏和/或可配置逻辑)。通信协议规定了通过互连进行通信的规则和消息格式。

在替代示例中,应用逻辑530被配置为与其相应的关联用户主机分区560通信,而无需通过主机逻辑520进行通信。

邮箱逻辑521可以包括一个或多个缓冲器和一个或多个控制寄存器。例如,给定的控制寄存器可以与特定缓冲器相关联,并且该寄存器可以用作信号量以在管理分区550与用户分区560之间进行同步。作为具体示例,如果分区可以修改控制寄存器的值,则分区可以写入缓冲器。可以从主机逻辑520访问缓冲器和控制寄存器。在替代示例中,可以从主机逻辑520和应用逻辑530访问缓冲器和控制寄存器。当消息被写入缓冲器时,可以写入另一个控制寄存器(例如,消息就绪寄存器)以指示消息已完成。消息就绪寄存器可以由分区轮询以判定是否存在消息,或者可以响应于写入消息就绪寄存器而生成中断并将其发送到分区。

在其他示例中,邮箱逻辑521由在应用逻辑530与主机逻辑520之间经由可编程逻辑服务提供商110、fpgad服务进程551或服务提供商和服务进程两者传输的消息替换或增强。通过要求经由可编程逻辑服务提供商110发送消息,可以通过与可配置硬件平台510(以及在某些情况下,主机服务器计算机540)分开执行的服务来应用附加安全特征(例如,消息鉴定、授权或其他安全特征)。

用户分区560可以包括用于将在用户分区内执行的最终用户应用与可配置硬件平台510接合的软件栈。应用软件栈可以包括用于与控制平面和数据平面通信的功能。然而,可以限制用户分区560访问配置端口522。例如,可以限制用户分区从配置端口访问读取或写入数据。在一些示例中,可以向用户分区560授予对配置端口的受限的读取访问权。

应用软件栈可以包括用于向在用户分区560内执行的最终用户应用提供对可配置硬件平台510的访问的cl应用api564。该cl应用api564可以包括用于与可配置硬件平台510和管理分区550通信的方法或功能的库。例如,最终用户应用561可以通过使用cl应用api564的api将命令或数据发送到可配置应用逻辑530。特别地,cl应用api564的api可以与应用逻辑(al)数据平面驱动器563接合,应用逻辑(al)数据平面驱动器563可以生成以可以与目标分区通信的应用逻辑530为目标的事务。以这种方式,最终用户应用561可以使可配置应用逻辑530接收、处理和/或响应数据以潜在地加速最终用户应用561的任务。作为另一示例,最终用户应用561可以通过使用cl应用api564的api将命令或数据发送到管理分区550。特别地,cl应用api564的api可以与al管理驱动器562接合,al管理驱动器562可以生成以可以与邮箱逻辑521通信的应用逻辑530为目标的事务。以这种方式,最终用户应用561可以使管理分区550提供关于可配置硬件平台510的操作或元数据。

图6是示出如可以在所公开的技术的某些示例中执行的在系统初始化期间在系统组件之间传递的消息的示例的序列图600。例如,上面关于图5讨论的系统500可以用于实现所公开的操作。

在消息610处,在管理分区550内执行的管理者级别进程提交创建计算实例的请求。该请求可以包括例如实例id和时隙号。可编程逻辑服务提供商110可以提供到特定计算实例元数据标识符的映射,该特定计算实例元数据标识符标识要在计算实例上加载的图像。消息610被发送到可编程逻辑服务提供商110,可编程逻辑服务提供商110创建实例并返回指示操作是否成功完成的状态消息615。

可编程逻辑服务提供商110又将具有编码标识符(例如,机器图像标识符、产品代码或物理或虚拟计算实例的标识符)的请求620发送到存储资源150、155,以检索使用标识符识别的未高速缓存的比特流621。在一些示例中,计算实例标识符可以被映射到可重新配置资源标识符,该可重新配置资源标识符标识可以用于对可重新配置资源进行编程的配置数据。在一些情况下,计算实例标识符可以与多个不同的可重新配置设备标识符匹配,这取决于可用的可重新配置硬件资源,其可以基于可重新配置逻辑设备:设备的类型、制造商、大小、能力或其他合适参数而变化。响应于发送具有计算实例标识符的请求,存储155、150返回625元数据文件,该元数据文件包括比特流标识符、比特流统一资源标识符(uri)、请求的状态和时间戳。可编程逻辑服务提供商110分析该响应,并且如果识别的配置数据是可接受的,则向包含比特流uri的存储150、155发送请求消息630。响应于接收到该请求,该存储返回635配置数据,例如识别的比特流。

当比特流由可编程逻辑服务提供商110接收时,文件系统写入消息640被发送到比特流高速缓存器546。在那里,包括fpga比特流的配置数据可以临时存储在计算实例的本地存储中,在该计算实例上将对可重新配置硬件进行编程和执行。然后,可编程逻辑服务提供商110将加载比特流请求消息650发送到fpgad服务进程。响应于接收到请求,服务进程向计算机实例的一个或多个可重新配置逻辑设备发送请求以加载比特流660,并从可重新配置逻辑设备接收指示比特流加载是否成功的状态响应670。如果对可重新配置逻辑设备进行编程成功,则fpgad服务进程向可编程逻辑服务提供商发送指示加载比特流是否成功的状态消息675。

图7是概述如可以在所公开技术的某些示例中执行的在为一个或多个可重新配置逻辑设备加载和编程比特流时执行的一系列动作和消息的序列图700。

用户分区560通过向fpgad服务进程551发送加载请求710来启动比特流的加载。响应于接收到该请求,服务进程向可编程逻辑服务提供商110发送获取的比特流消息715,该获取的比特流消息715包括比特流类型的指示、计算实例标识符、比特流标识符和fpga时隙标识符。例如,操作先前分配的计算实例的用户可以决定在其本地计算硬件上加载比特流,并通过计算机网络向位于另一服务器(包括托管在计算云中的服务器)的可编程逻辑服务提供商发送请求。

可编程逻辑服务提供商110又将请求720提交给数据库和/或联网存储150、155,并接收指示比特流标识符、比特流uri、请求状态和时间戳的响应消息725。可编程逻辑服务提供商110鉴定该响应,并且如果比特流被授权供请求计算实例用户使用,则向包含比特流uri的存储150、155提交请求730。响应于接收到该请求消息730,该存储发送包括所请求的配置数据721诸如fpga比特流的响应消息735。

在配置数据的传输开始之后,可编程逻辑服务提供商110将写入消息740发送到比特流高速缓存器546。在高速缓存比特流之时或之后,服务提供商将加载比特流请求消息750发送到fpgad服务进程750。响应于接收到加载比特流请求,服务进程551将包括比特流数据的加载比特流命令760发送到一个或多个可配置逻辑设备,并且一旦加载比特流并且已完成对可重新配置逻辑设备的编程就接收状态消息770。然后,服务进程551向用户分区560发送指示比特流是否被成功加载的消息780,以及然后向可编程逻辑服务提供商110发送指示是否已完成具有所指示的比特流的fpga的编程的另一消息785。

图8是概述根据所公开技术的某些示例的可以作为寄存器访问操作的一部分发送的消息的序列图800。

如图所示,远程用户应用810可以发起注册的访问事务。例如,远程用户可以使用应用传输层(例如,使用http请求)发起访问fpga的一个或多个寄存器的请求。该消息820经由计算机网络传输到可编程逻辑服务提供商110。可编程逻辑服务提供商110将请求830映射到关联的计算实例,并将该请求发送到fpgad服务进程551。

服务进程551发送请求840以将所请求的寄存器读取到一个或多个可重新配置逻辑设备,并接收指示寄存器读取请求是否成功的响应消息845,并且如果该请求成功,则产生作为读取操作的结果的一个或多个值。

fpgad服务进程551向可编程逻辑服务提供商110发送指示状态和任何读取寄存器值的响应消息850,可编程逻辑服务提供商110转而向用户远程应用810发送消息860。因此,在计算网络(包括通过因特网或其他合适的计算网络)内的任意位置的用户可以访问诸如寄存器值之类的fpga数据。可以类似地调整所示的序列图800,以使用不同的消息命令和fpga命令将数据写入fpga寄存器。

图9是概述如可以在所公开技术的某些示例中执行的使用联网可编程逻辑服务提供商来编程可重新配置逻辑资源的示例方法的流程图900。例如,诸如上面关于图1、图3和图5描述的那些的系统可以用于实现所示方法。

在处理框910,经由计算机网络接收请求以创建包括可重新配置逻辑资源的计算实例。例如,用户可以向在由计算云提供的网络服务器上托管的可编程逻辑服务提供商发送请求。可编程逻辑服务提供商可以实现用于鉴定和控制对配置数据以及包含可重新配置逻辑设备的计算硬件的访问的域逻辑。

在处理框920,产生用于对可重新配置逻辑资源进行编程的配置数据。在一些示例中,该产生配置数据在启动对计算实例的请求之前发生。在一些示例中,该产生包括鉴定请求以判定该请求是否授权相关用户访问所请求的配置数据。在一些示例中,从第一方用户接收请求,并且从不同于第一方用户的第三方用户接收配置数据。在一些示例中,在提供配置数据之前处理与请求相关联的金融事务。当且仅当金融事务成功处理时,才提供配置数据。在其他示例中,计量资源的使用(例如,包括可重新配置逻辑资源的使用)被计量,并且基于计量的使用在稍后的时间点处理金融事务。在一些示例中,提供配置数据而无需额外费用。因此,包括比特流的配置数据可以从第三方提供商出售或出租给其他用户。

在一些示例中,产生配置数据还包括具有机器图像指示符以设置配置数据并基于该映射选择要产生的配置数据。例如,用于特定类型或类别的计算实例的机器图像指示符可以与一个或多于一个配置数据指示符匹配,并且可以基于目标计算主机选择多个配置数据中的所选择的一个。例如,环境中的计算实例可以访问不同类型、制造商或大小的可重新配置逻辑设备。在一些示例中,产生配置数据包括从发送到可编程逻辑服务提供商的存储中检索比特流uri,并且提供商转而选择所指示的比特流之一来请求并且然后发送计算实例。

在一些示例中,通过编译由请求指示的源代码来执行产生配置数据,以创建用于配置数据的至少一部分的编程文件。例如,以诸如systemverilog、systemc、c之类的硬件描述语言表示的源代码或其他合适的源代码可以由请求用户提供并使用可编程逻辑服务提供商编译。在一些示例中,提供了库或api,该库或api将函数调用映射到使用可配置硬件资源实现的加速器功能。因此,可编程逻辑服务提供商提供用于将源代码转换成可以加载到计算实例的可重新配置逻辑设备上的比特流的封装的工具链。因此,请求用户无需访问低级实现细节,诸如网表、fpga布局和路由数据或其他此类数据。此外,可以作为web服务提供对fpga的访问,而不需要使用命令行接口来依次运行一系列工具。因此,web服务可以提供隐藏避免用户的复杂性的稳健接口,从而提供用于使用可重新配置逻辑设备来实现诸如功能加速器之类的任务的用户友好环境。

在一些示例中,可编程逻辑服务提供商还执行与购买和/或许可机器实例标识符及其相关联的可重新配置逻辑标识符有关的操作。在一些示例中,例如诸如当利用从网络存储获得的先前使用的一组配置数据重新初始化计算实例时,配置数据可以从计算实例本地的比特流高速缓存器产生。在一些示例中,配置数据是预定义的一组配置数据,该预定义的一组配置数据然后可以具有为特定用户重新编程的一部分数据。在这样的示例中,通用配置图像可以在计算实例处高速缓存,并且在比产生和加载完整的一组比特流所需的更短的时间段内定制。在一些示例中,可以每个计算实例会话多次实现fpga的重新编程。这在计算实例的用户正在执行使用可重新配置逻辑设备实现的加速器功能的调试操作的情况下特别有用。

在处理框930,启动计算实例。启动实例包括使用计算实例主机上的通用处理器执行管理者特权级别进程和至少一个用户进程。例如,诸如fpgad服务进程之类的服务进程可以用于控制可重新配置逻辑资源的管理和配置。用户进程可以与fpgad服务进程和/或可编程逻辑服务提供商交互以接收配置数据并向服务进程提供请求。在一些示例中,在指示新的计算实例之前完全清除计算实例。在其他示例中,保留一些计算实例状态并且部分地重置计算实例。例如,现有的服务进程和/或用户进程可以在可重新配置逻辑设备被重置和重新编程的同时保持其状态。在一些示例中,仅重新编程和/或重新初始化可重新配置逻辑设备的一部分,诸如静态逻辑、可重新配置逻辑、主机逻辑和/或客户逻辑。

在一些示例中,配置数据在启动计算实例之前产生,并且启动包括在将计算实例提供给请求者(诸如请求用户)之前用产生的配置数据对可重新配置逻辑资源进行编程。

在处理框940,利用配置数据对可重新配置逻辑资源进行编程。例如,fpgad服务进程可以管理应用和配置数据到计算实例的一个或多个fpgad进程,并返回指示重新编程操作成功或失败的状态消息。

图10概述了如可以在所公开的技术的某些示例中执行的在基于web的服务环境中编程fpga的示例方法1000。例如,上面关于图1-5讨论的系统可以用于实现该概述的方法。

在处理框1010,接收请求以在一个或多个fpga处实现应用逻辑。例如,用户可以使用api通过互联网向计算云提交请求。在一些示例中,从与将提供用于执行该概述方法的配置数据的第三方不同的第一方接收请求。在一些示例中,该请求包括要用于启动计算实例的请求的机器图像的指示符。可以将机器图像指示符映射到一组或多组配置数据的集合,并且可以选择这些组配置数据中的一组用于对计算实例进行编程。

在处理框1020,可以分配包括所请求的fpga的计算实例。例如,可编程逻辑服务提供商可以识别可用的计算资源并将一个或多个计算主机分配为用于实现所请求的应用逻辑的计算实例。

在处理框1030,对请求进行鉴定,并且产生用于对fpga进行编程的配置信息。在一些示例中,这包括执行域逻辑以鉴定和处理用于购买、租赁或许可配置数据图像的金融事务。

在处理框1040,将在处理框1030处鉴定和产生的配置信息发送到在处理框1020处分配的计算实例。在一些示例中,可以从比特流高速缓存器接收配置信息的至少一部分。例如,先前使用的或与计算实例图像相关联的默认配置数据可以存储在本地比特流高速缓存器中,从而避免传输计算实例的比特流,并且因此改进网络带宽使用和响应时间。

在处理框1050,使用配置信息对所请求的fpga进行编程。例如,在计算主机上执行的服务进程可以将配置数据应用于fpga的一个或多个配置端口,以对相关联的fpga进行编程。

图11是基于网络的计算服务提供商1100的计算系统图,该图示出了可以使用本文描述的示例的一个环境。作为背景,计算服务提供商1100(例如,云服务提供商)能够将计算和存储容量作为服务递送到最终接收者社区。在一些示例中,可以由组织或代表组织为该组织建立计算服务提供商。也就是说,计算服务提供商1100可以提供“私有云环境”。在另一示例中,计算服务提供商1100支持多租户环境,其中多个客户独立地操作(例如,公共云环境)。一般而言,计算服务提供商1100可以提供以下模型:基础架构即服务(“iaas”)、平台即服务(“paas”)和/或软件即服务(“saas”)。可以提供其他模型。对于iaas模型,计算服务提供商1100可以将计算机提供为物理或虚拟机和其他资源。虚拟机可以由管理程序作为访客运行,如下面进一步描述的。paas模型递送计算平台,该计算平台可以包括操作系统、编程语言执行环境、数据库和web服务器。应用开发人员可以在计算服务提供商平台上开发和运行他们的软件解决方案,而不需购买和管理底层硬件和软件的费用。此外,应用开发人员可以在计算服务提供商平台的可配置硬件上开发和运行他们的硬件解决方案。saas模型允许在计算服务提供商中安装和操作应用软件。在一些示例中,最终用户使用联网的客户端设备(诸如台式计算机、膝上型计算机、平板电脑、智能电话等)运行web浏览器或其他轻量级客户端应用来访问计算服务提供商1100。本领域技术人员将认识到,计算服务提供商1100可以被描述为“云”环境。

特定图示的计算服务提供商1100包括多个服务器计算机1102a-1102c。虽然只显示了三台服务器计算机,但可以使用任何数量的服务器计算机,并且大型中心可以包含数千台服务器计算机。服务器计算机1102a-1102c可以提供用于执行软件实例1106a-1106c的计算资源。在一个示例中,软件实例1106a-1106c是虚拟机。如本领域中已知的,虚拟机是执行像物理机之类的应用的机器(即,计算机)的软件实现的实例。在虚拟机的示例中,服务器1102a-1102c中的每一个服务器可以被配置为执行管理程序1108或被配置为使得能够在单个服务器上执行多个软件实例1106的另一类型的程序。另外,每个软件实例1106可以被配置为执行一个或多个应用。

应当理解,尽管本文公开的示例主要在虚拟机的背景下描述,但是其他类型的实例可以与本文公开的概念和技术一起使用。例如,这里公开的技术可以与存储资源、数据通信资源以及其他类型的计算资源一起使用。这里公开的示例还可以在不利用虚拟机实例的情况下直接在计算机系统上执行应用的全部或一部分。

服务器计算机1102a-1102c可以包括不同硬件资源或实例类型的异构集合。一些硬件实例类型可以包括可配置硬件,该可配置硬件至少部分地可由计算服务提供商1100的用户配置。实例类型的一个示例可以包括与可配置硬件1104a通信的服务器计算机1102a。具体地,服务器计算机1102a和可配置硬件1104a可以通过诸如pcie之类的本地互连进行通信。实例类型的另一示例可以包括服务器计算机1102b和可配置硬件1104b。例如,可配置逻辑1104b可以集成在多芯片模块内或与服务器计算机1102b的cpu集成在同一管芯上。实例类型的又一示例可以包括服务器计算机1102c而没有任何可配置硬件。因此,具有和不具有可配置逻辑的硬件实例类型可以存在于计算服务提供商1100的资源内。

可以保留用于执行用于管理服务器计算机1102和软件实例1106的操作的软件组件的一个或多个服务器计算机1120。例如,服务器计算机1120可以执行管理组件1122。客户可以访问管理组件1122以配置由客户购买的软件实例1106的操作的各个方面。例如,客户可以购买、出租或租赁实例,并对软件实例的配置进行更改。每个软件实例的配置信息可以作为机器图像(mi)1142存储在网络附加存储1140上。具体而言,mi1142描述了用于启动vm实例的信息。mi可以包括用于实例的根卷的模板(例如,os和应用)、用于控制哪些客户帐户可以使用mi的启动许可、以及指定在实例被启动时附加到实例的卷的块设备映射。mi还可以包括对可配置硬件图像(chi)1142的引用,该可配置硬件图像(chi)在实例启动时加载在可配置硬件1104上。chi包括用于编程或配置可配置硬件1104的至少一部分的配置数据。mi1142和chi可以分别使用机器图像标识符(mii)和可配置硬件图像标识符(chii)由软件引用。mii和chii可以唯一地识别它们各自的图像。在一些示例中,可编程逻辑服务提供商或逻辑储存库服务为图像分配标识号。在一些示例中,标识符可以包括从图像的其他方面(例如,图像的md5或sha散列值)生成的散列值。

客户还可以指定有关如何根据需求缩放购买的实例的设置。管理组件还可以包括策略文档以实现客户策略。自动缩放组件1124可以基于由客户限定的规则来缩放实例1106。在一个示例中,自动缩放组件1124允许客户指定用于判定何时应该实例化新实例的放大规则以及用于判定何时应该终止现有实例的缩小规则。自动缩放组件1124可以包括在不同服务器计算机1102或其他计算设备上执行的多个子组件。自动缩放组件1124可以监视关于内部管理网络的可用计算资源,并根据需要修改可用资源。

部署组件1126可以用于帮助客户部署计算资源的新实例1106。部署组件可以访问与实例相关联的帐户信息,诸如谁是帐户的所有者、信用卡信息、所有者的国家等。部署组件1126可以从客户接收包括描述应如何配置新实例1106的数据的配置。例如,该配置可以指定要在新实例1106中安装的一个或多个应用、提供要执行的用于配置新实例1106的脚本和/或其他类型的代码、提供指定应如何准备应用高速缓存器的高速缓存逻辑,以及其他类型的信息。部署组件1126可以利用客户提供的配置和高速缓存逻辑来配置、准备和启动新实例1106。该配置、高速缓存逻辑和其他信息可以由客户使用管理组件1122来指定,或者通过将该信息直接提供给部署组件1126来指定。实例管理器可以被视为部署组件的一部分。

客户账户信息1128可以包括与多租户环境的客户相关联的任何期望信息。例如,客户帐户信息可以包括客户的唯一标识符、客户地址、帐单信息、许可信息、用于启动实例的定制参数、调度信息、自动缩放参数、用于访问帐户的先前ip地址、可供客户访问的mi和chi的列表等。

可以保留用于执行用于管理配置数据到服务器计算机1102的可配置硬件1104的下载的软件组件的一个或多个服务器计算机1130。例如,服务器计算机1130可以执行包括摄取组件1132、库管理组件1134和下载组件1136的逻辑储存库服务和/或可编程逻辑服务提供商。摄取组件1132可以接收主机逻辑和应用逻辑设计或规范,并且生成可以用于配置可配置硬件1104的配置数据。库管理组件1134可以用于管理与逻辑储存库服务相关联的配置数据、源代码和用户信息。例如,库管理组件1134可以用于将从用户的设计生成的配置数据存储在由用户在网络附加存储1140上指定的位置。特别地,配置数据可以存储在网络附加存储1140上的可配置硬件图像1142内。另外,库管理组件1134可以管理输入文件(诸如用于应用逻辑和主机逻辑的规范)的版本化和存储以及关于逻辑储存库服务的用户和/或逻辑设计的元数据。例如,库管理组件1134可以通过诸如用户标识符、实例类型、市场标识符、机器图像标识符和可配置硬件标识符之类的一个或多个属性来索引所生成的配置数据。下载组件1136可以用于鉴定对配置数据的请求,并在请求被鉴定时将该配置数据发送到请求者。例如,当启动使用可配置硬件1104的实例1106时,服务器计算机1102a-b上的代理可以向下载组件1136发送请求。作为另一示例,当实例1106在可配置硬件1104运行时请求可配置硬件1104被部分地重新配置时,服务器计算机1102a-b上的代理可以向下载组件1136发送请求。

网络附加存储(nas)1140可以用于提供存储空间和对存储在nas1140上的文件的访问。例如,nas1140可以包括用于使用网络文件共享协议诸如网络文件系统(nfs)处理请求的一个或多个服务器计算机。nas1140可以包括可移动或不可移动介质,该介质包括磁盘、存储区域网络(san)、独立盘冗余阵列(raid)、磁带或盒式录音带、cd-rom、dvd或可以用于以非暂时方式存储信息并且可以通过网络1150访问信息的任何其他介质。在一些示例中,nas1140可以用数据库系统替换或补充。

网络1150可以用于将服务器计算机1102a-1102c、服务器计算机1120和1130、以及存储1140互连。网络1150可以是局域网(lan)并且可以连接到广域网(wan)1160,使得最终用户可以访问计算服务提供商1100。应该理解的是,图11中所示的网络拓扑结构已经被简化,并且可以利用更多的网络和联网设备来互连这里公开的各种计算系统。

图12更详细地示出了可以在计算服务提供商1100的多租户环境中使用的管理组件1206。为了访问和利用实例(诸如图11的实例1106),可以使用客户端设备。客户端设备1210可以是移动的或以其他方式的各种计算设备中的任何一种,这些计算设备包括蜂窝电话、智能电话、手持式计算机、个人数字助理(pda)、台式计算机等。客户端设备1210可以与计算服务提供商1100通过端点1212通信,其可以是设计成接收和处理api请求的dns地址。特别地,端点1212可以是被配置为公开api的web服务器。使用api请求,客户端1210可以请求实现本文描述的任何功能。可以在计算服务提供商1100内部的其他服务1215同样可以向端点1212发出api请求。

可以包括或可以不包括在计算服务提供商1100中的其他一般管理服务包括准入控制1214,例如,一起操作作为准入控制web服务的一个或多个计算机。准入控制1214可以对计算服务提供商1100内的数据的服务或存储的api请求进行鉴定、验证和解包。容量跟踪器1216负责通过在预测、供应和实时配置以及容量分配方面管理和配置物理库存来判定服务器需要如何配置以满足不同实例类型的需要。容量跟踪器1216在容量池数据库1218中维护可用库存池。容量跟踪器1216还可以监视容量级别,以知道资源是否容易获得或受限。实例管理器1250控制网络中实例的启动和终止。当接收到指令(诸如通过api请求)以启动实例时,实例管理器从容量池1218中提取资源并在决定的主机服务器计算机上启动实例。类似于实例管理器的是存储管理器1222和网络资源管理器1224。存储管理器1222涉及存储卷的启动和终止,而网络资源管理器1224涉及路由器、交换机、子网等的启动和终止。分区的网络1240关于图13进一步描述,并且分区的网络1240包括在其上启动实例的物理层。

健康监视服务1260可以提供对在计算服务提供商1100上运行的资源和应用客户的监视。系统管理员可以使用监视服务1260来收集和跟踪指标,并深入了解应用如何运行。例如,监视服务1260可以允许系统范围内对应用性能和操作健康状况的可见性。由健康监视服务1260生成的度量可以存储在度量数据库1262中。

图13示出了分区的网络1240和与其相关联的物理硬件。分区的网络1240可以包括由路由器1316耦合在一起的多个数据中心,诸如数据中心1310。路由器1316读取接收的数据包中的地址信息并判定数据包的目的地。如果路由器决定不同的数据中心包含主机服务器计算机,则数据包将被转发到该数据中心。如果数据包被寻址到数据中心1310中的主机,则将该数据包传递到将数据包的公共ip地址转换为私有ip地址的网络地址转换器(nat)1318。该nat还将私有地址转换为绑定在数据中心1310外部的公共地址。附加路由器1320可以耦合到nat以将数据包路由到主机服务器计算机1330的一个或多个机架。每个机架1330可以包括耦合到多个主机服务器计算机的交换机1332。在1340处的扩展视图中示出了特定主机服务器计算机。

每个主机1340具有包括一个或多个cpu、存储器、存储设备、可重新配置硬件等的底层硬件1350。在硬件1350上方运行层是管理程序或内核层1360。管理程序或内核层可以分类为类型1或类型2管理程序。类型1管理程序直接在主机硬件1350上运行,以控制硬件和管理客户操作系统。类型2管理程序在传统的操作系统环境中运行。因此,在类型2环境中,管理程序可以是在操作系统上方运行的不同层,并且操作系统与系统硬件交互。不同类型的管理程序包括xen-based、hyper-v、esxi/esx、linux等,但也可以使用其他管理程序。管理层1370可以是管理程序的一部分或者与管理程序分离,并且通常包括访问硬件1350所需的设备驱动器。分区1380是由管理程序隔离的逻辑单元。每个分区1380可以是被分配的其自己的硬件层的存储器、cpu分配、存储等的部分。另外,每个分区可以包括虚拟机和它自己的客户操作系统。因此,每个分区是容量的设计用于独立于其他分区来支持其自己的虚拟机的抽象部分。

可以使用管理层1370来监视在实例上执行的任何应用,管理层1370然后可以将度量传递到用于存储在度量数据库1262中的健康监视服务1260。另外,管理层1370可以向监视服务1250传递正在运行的实例的数量、启动正在运行的实例的时间、正在使用的操作系统、正在运行的应用等。所有这些度量可以用于健康监视服务1260的消费并存储在数据库1262中。

图14描绘了可以实现所描述的创新的合适计算环境1400的一般化示例。计算环境1400不用于对使用范围或功能提出任何限制,因为创新可以在不同的通用或专用计算系统中实现。例如,计算环境1400可以是各种计算设备中的任何一种(例如,台式计算机、膝上型计算机、服务器计算机、平板电脑计算机等)。

参考图14,计算环境1400包括一个或多个处理单元1410、1415和存储器1420、1425。在图14中,该基本配置1440包括在虚线内。处理单元1410、1415执行计算机可执行指令。处理单元可以是通用中央处理单元(cpu)、专用集成电路(asic)中的处理器或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力。例如,图14示出了中央处理单元1410以及图形处理单元或协处理单元1415。有形存储器1420、1425可以是可由(一个或多个)处理单元访问的易失性存储器(例如,寄存器、高速缓存器、ram)、非易失性存储器(例如,rom、eeprom、闪存等)、或者易失性存储器和非易失性存储器的某种组合。存储器1420、1425以适于由(一个或多个)处理单元执行的计算机可执行指令的形式存储实现本文描述的一个或多个创新的软件1480。

计算系统可以具有附加特征。例如,计算环境1400包括存储1440、一个或多个输入设备1450、一个或多个输出设备1460、以及一个或多个通信连接1470。诸如总线、控制器或网络之类的互连机制(未示出)互连计算环境1400的组件。通常,操作系统软件(未示出)为在计算环境1400中执行的其他软件提供操作环境,并协调计算环境1400的组件的活动。

有形存储1440可以是可移动的或不可移动的,并且包括磁盘、磁带或盒式录音带、cd-rom、dvd或可以用于以非暂时方式存储信息并且可以在计算环境1400内被访问的任何其他介质。存储1440存储用于实现本文描述的一个或多个创新的软件1480的指令。

(一个或多个)输入设备1450可以是触摸输入设备,诸如键盘、鼠标、笔或轨迹球、语音输入设备、扫描设备或向计算环境1400提供输入的另一设备。(一个或多个)输出设备1460可以是显示器、打印机、扬声器、cd刻录机或提供来自计算环境1400的输出的另一设备。

(一个或多个)通信连接1470使得能够通过通信介质与另一计算实体进行通信。通信介质在调制数据信号中传送诸如计算机可执行指令、音频或视频输入或输出、或其他数据之类的信息。调制数据信号是以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质可以使用电、光、rf或其他载体。

尽管为了方便呈现,以特定的顺序次序描述了所公开的方法的一些的操作,但是应该理解,这种描述方式包括重新排列,除了下面阐述的由特定语言需要特定的排序之外。例如,在某些情况下,顺序描述的操作可以同时执行或重新排列。此外,为了简单起见,附图可能未示出所公开的方法可以与其他方法结合使用的各种方式。

任何所公开的方法可以实现为存储在一个或多个计算机可读存储介质(例如,一个或多个光学介质盘、易失性存储器组件(诸如dram或sram)或非易失性存储器组件(诸如闪存或硬盘驱动器))上并且在计算机(例如,任何商用计算机,包括智能电话或包括计算硬件的其他移动设备)上执行的计算机可执行指令。术语计算机可读存储介质不包括通信连接,诸如信号和载波。用于实现所公开的技术的任何计算机可执行指令以及在所公开的示例的实现期间创建和使用的任何数据可以存储在一个或多个计算机可读存储介质上。计算机可执行指令可以是例如专用软件应用或经由web浏览器或其他软件应用(诸如远程计算应用)访问或下载的软件应用的一部分。这样的软件是可以使用一个或多个网络计算机例如在单个本地计算机(例如,任何合适的商用计算机)上或在网络环境(例如,经由因特网、广域网、局域网、客户端服务器网络(诸如云计算网络)或其他此类网络)中执行的。

为清楚起见,仅描述了基于软件的实现的某些选定方面。省略了本领域公知的其他细节。例如,应该理解,所公开的技术不限于任何特定的计算机语言或程序。例如,所公开的技术可以通过用c、c++、java、perl、javascript、adobeflash或任何其他合适的编程语言编写的软件来实现。同样地,所公开的技术不限于任何特定计算机或硬件类型。合适的计算机和硬件的某些细节是众所周知的,并且不需要在本公开中详细阐述。

还应该很好地理解,本文描述的任何功能可以至少部分地由一个或多个硬件逻辑组件而不是软件来执行。例如但不限于,可以使用的示意性类型的硬件逻辑组件包括现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、系统级芯片系统(soc)、复杂可编程逻辑设备(cpld)等。

可以根据以下条款描述本公开的实施方式:

1.一种托管网络服务的系统,该网络服务提供现场可编程门阵列(fpga)服务,该系统包括:

可编程逻辑服务提供商,该可编程逻辑服务提供商配置为:

接收在fpga中实现应用逻辑的请求,

响应于接收到请求,分配包括fpga的计算实例,

产生用于仅对fpga的可重新配置逻辑的一部分进行编程以包括应用逻辑的配置信息,以及

将配置信息发送给分配的计算实例;以及

计算主机,该计算主机由可编程逻辑服务提供商分配给主机计算实例,该计算主机包括:

存储器,

处理器,该处理器被配置为执行存储在存储器中的计算机可执行指令,以及

fpga。

2.根据条款1所述的系统,其中,可编程逻辑服务提供商在与计算主机不同的物理服务器上实现。

3.根据任一前述条款所述的系统,其中:

该请求包括用于应用逻辑的标识符;以及

可编程逻辑服务提供商还被配置为尝试鉴定该请求,并且响应于成功鉴定该请求,使用该标识符产生配置信息。

4.根据任一前述条款所述的系统,其中可编程逻辑服务提供商还被配置为在接收请求之前分配计算实例。

5.根据任一前述条款所述的系统,其中,所述可编程逻辑服务提供商还被配置为在启动所述实例的执行之前分配所述计算实例并对所述应用逻辑进行编程。

6.一种方法,包括如下步骤:

经由计算机网络,接收用以创建包括可重新配置逻辑资源的计算实例的请求;

产生用于对可重新配置逻辑资源的用户部分进行编程的配置数据;

启动计算实例,该计算实例被配置为与可重新配置逻辑资源的主机部分进行通信;和

用配置数据对可重新配置逻辑资源的用户部分进行编程,用户部分被配置为经由主机部分而与计算实例进行通信。

7.根据条款6所述的方法,其中启动计算实例的步骤发生在产生配置数据的步骤之前。

8.根据条款6或7所述的方法,其中:产生配置数据的步骤发生在启动步骤之前,启动步骤包括:在将计算实例提供给请求者之前,执行用所产生的配置数据对可重新配置逻辑资源进行编程的步骤。

9.根据条款6-8中的任一项所述的方法,还包括:在将计算实例提供给请求者之后,利用所产生的配置数据部分地重新配置可重新配置逻辑资源。

10.根据条款6-9中的任一项所述的方法,其中,在利用所产生的配置数据执行对可重新配置逻辑资源进行编程的步骤之后,计算实例进一步重新编程所编程的可重新配置逻辑的一部分,但不是全部。

11.根据条款6-10中的任一项所述的方法,其中:

该请求包括配置数据的指示符;

产生配置数据的步骤还包括鉴定请求以判定与该请求相关联的用户是否被授权访问所请求的配置数据;和

该产生包括产生指示的配置数据。

12.根据条款11所述的方法,其中,所述指示符用于在联网存储数据库或存储设备中定位配置数据。

13.根据条款6-12中的任一项所述的方法,其中,利用网络可访问计算设备来接收所述请求,该网络可访问计算设备被配置为经由计算机网络而与托管计算实例的服务器通信。

14.根据条款6-13中的任一项所述的方法,其中计算实例使用在计算实例上执行的服务进程与可重新配置逻辑的主机部分进行通信。

15.根据条款6-14中的任一项所述的方法,其中从第一方接收请求,并且其中从不同于第一方的第三方接收配置数据。

16.根据条款6-15中的任一项所述的方法,其中:

该请求包括用于启动计算实例的指示符;以及

产生该配置数据的步骤还包括:

将指示符映射到一组配置数据,以及

基于映射选择要产生的配置数据。

17.根据条款6-16中的任一项所述的方法,还包括:通过编译由请求指示的源代码来生成配置数据,以创建编程文件作为用于可重新配置逻辑资源的配置数据的至少一部分。

18.一种系统,包括:

网络可访问的计算设备,网络可访问的计算设备被配置为接收用以创建包括可重新配置逻辑资源的计算实例的请求;和

计算主机,计算主机耦接到网络可访问的计算设备并且计算主机包括用于提供所请求的计算实例的执行资源,计算主机包括可重新配置逻辑资源,该可重新配置逻辑资源包含用户部分和主机部分的,其中:网络可访问计算设备产生用于以主机部分对可重新配置逻辑资源的用户部分进行编程的配置数据,用户部分至少部分地由所接收的请求来识别。

19.根据条款18所述的系统,其中:

计算主机还被配置为以管理者特权级别进程或虚拟机实例对可重新配置逻辑资源进行编程;和

计算主机还被配置为执行用于以用户特权级别进程或另一虚拟机实例来操作经编程的可重新配置逻辑资源的计算机可执行代码。

20.根据第18或19条所述的系统,还包括:

网络可访问存储,该网络可访问存储在配置数据内存储编程数据,该存储仅可由网络可访问计算设备上的管理者特权级别进程或虚拟机访问。

21.根据条款18-20中的任一项所述的系统,其中:

网络可访问的计算设备托管在与计算主机不同的物理服务器上。

22.根据条款18-21中的任一项所述的系统,其中:

网络可访问计算设备包括计算机可执行指令,当由处理器执行该指令时,所述计算机可执行指令提供用于基于请求管理可重新配置逻辑资源的逻辑。

23.根据条款18-22中的任一项所述的系统,其中计算主机执行用于服务进程的计算机可执行指令,该服务进程从网络可访问计算设备接收命令并利用可重新配置逻辑资源的主机部分或用户部分来执行与那些命令相关联的操作。

此外,可以通过合适的通信工具来上载、下载或远程访问任何基于软件的示例(包括例如用于使计算机执行任何所公开的方法的计算机可执行指令)。这种合适的通信工具包括例如因特网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括rf、微波和红外通信)、电子通信、或其他此类通信方式。

所公开的方法、装置和系统不应被解释为以任何方式进行限制。相反,本公开内容针对各种公开的示例的单独地以及彼此的各种组合和子组合的所有新颖和非显而易见的特征和方面。所公开的方法、装置和系统不限于任何特定方面或特征或其组合,所公开的示例也不要求存在任何一个或多个特定优点或解决任何一个或多个特定问题。

鉴于可以应用所公开技术的原理的许多可能的示例,应该认识到,所示示例仅是优选示例,并且不应被视为限制权利要求的范围。而是,所要求保护的主题的范围由随附权利要求限定。因此,我们将落入这些权利要求的范围的所有作为我们的发明而要求保护。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1