CN110088734A - 逻辑储存库服务 - Google Patents
逻辑储存库服务 Download PDFInfo
- Publication number
- CN110088734A CN110088734A CN201780060550.4A CN201780060550A CN110088734A CN 110088734 A CN110088734 A CN 110088734A CN 201780060550 A CN201780060550 A CN 201780060550A CN 110088734 A CN110088734 A CN 110088734A
- Authority
- CN
- China
- Prior art keywords
- logic
- configuration data
- hardware
- request
- configurable hardware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 33
- 230000004044 response Effects 0.000 claims abstract description 30
- 238000003860 storage Methods 0.000 claims description 48
- 238000004364 calculation method Methods 0.000 claims description 5
- 230000002194 synthesizing effect Effects 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims description 3
- 238000013500 data storage Methods 0.000 claims description 2
- 238000013461 design Methods 0.000 description 80
- 238000007726 management method Methods 0.000 description 60
- 230000006870 function Effects 0.000 description 48
- 238000004891 communication Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 19
- 238000005192 partition Methods 0.000 description 16
- 230000003068 static effect Effects 0.000 description 16
- 230000015572 biosynthetic process Effects 0.000 description 13
- 238000003786 synthesis reaction Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 10
- 238000012360 testing method Methods 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 7
- 238000012544 monitoring process Methods 0.000 description 7
- 238000013475 authorization Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 230000036541 health Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 244000035744 Hura crepitans Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- XXUZFRDUEGQHOV-UHFFFAOYSA-J strontium ranelate Chemical compound [Sr+2].[Sr+2].[O-]C(=O)CN(CC([O-])=O)C=1SC(C([O-])=O)=C(CC([O-])=O)C=1C#N XXUZFRDUEGQHOV-UHFFFAOYSA-J 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 230000003862 health status Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/343—Logical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/3312—Timing analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/394—Routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Stored Programmes (AREA)
Abstract
以下描述涉及逻辑储存库服务。在一个示例中,逻辑储存库服务的方法可以包括接收使用可配置硬件的应用程序逻辑的规范生成用于可配置硬件的配置数据的第一请求。该方法可以包括生成可配置硬件的配置数据。配置数据可以包括用于实现应用程序逻辑的数据。该方法可以包括接收第二请求以将配置数据下载到包括可配置硬件的主机服务器计算机。该方法可以包括响应于第二请求将配置数据发送到主机服务器计算机,使得可配置硬件配置有主机逻辑和应用程序逻辑。
Description
背景技术
云计算是使用在远程位置可用并且可通过诸如因特网的网络访问的计算资源(硬件和软件)。在一些布置中,用户能够根据需要购买这些计算资源(包括存储和计算能力)作为实用程序。云计算将用户的数据、软件和计算交托给远程服务。虚拟计算资源的使用可以提供许多优点,包括成本优势和/或快速适应变化的计算资源需求的能力。
大型计算机系统的用户可能具有由不同用例导致的各种计算要求。计算服务提供者可以包括具有不同类型的组件的各种不同计算机系统,这些组件具有不同级别的性能和/或功能。因此,用户可以选择在执行特定任务时可能潜在地更高效的计算机系统。例如,计算服务提供者可以为系统提供处理性能、内存性能、存储容量或性能以及网络容量或性能的不同组合。然而,一些用户可能希望使用专有或高度专用的硬件来执行他们的计算任务。因此,可以挑战计算服务提供者为这些用户提供专用计算硬件,同时保持通用资源的健康混合,以便可以在不同用户之间高效地分配资源。
附图说明
图1是示出包括用于管理配置数据的逻辑储存库服务的系统的示例的系统图。
图2是示出逻辑储存库服务的示例架构的系统图。
图3示出了可以由逻辑储存库服务执行的配置数据的摄取和生成的示例。
图4是示出在包括逻辑储存库服务的多租户环境中运行的多个虚拟机实例的示例系统图。
图5示出了图4的示例系统的进一步细节,包括用于配置和接口到可配置硬件平台的控制平面和数据平面的组件。
图6-7是管理用于在多租户环境中配置可配置硬件的配置数据的示例方法的流程图。
图8描绘了可以实现所描述的创新的合适计算环境的一般化示例。
发明详述
用于在一组可重复使用的通用计算资源内提供专用计算资源的一种解决方案是提供包括可配置逻辑平台的服务器计算机(诸如通过向服务器计算机提供包括现场可编程门阵列(FPGA)的附加卡)作为一般计算资源的选择。可配置逻辑是可被编程或配置为执行由应用于可配置逻辑的配置数据指定的逻辑功能的硬件。例如,计算资源的用户可以提供用于配置可配置逻辑的规范(诸如以硬件描述语言或其他语言编写的源代码),可配置逻辑可以根据规范来配置,并且配置的逻辑可以用于为用户执行任务。然而,允许用户访问计算设施的低级硬件可能潜在地在计算设施内引入安全性和隐私问题。作为具体示例,如果配置的逻辑导致计算设施内的一个或多个服务器计算机发生故障(例如,崩溃、挂起或重启)或被拒绝的网络服务,则来自一个用户的错误或恶意设计可能潜在地导致对其他用户拒绝服务。作为另一具体示例,如果配置的逻辑能够读取和/或写入另一用户的存储器空间的存储器,则来自一个用户的错误或恶意设计可能潜在地破坏或读取来自另一用户的数据。作为另一具体示例,如果配置的逻辑包括使得设备超过可配置逻辑平台的功耗或温度规范的电路(例如环形振荡器),则来自用户的错误或恶意设计可能潜在地导致可配置逻辑平台发生故障。
如本文所述,计算服务设施可包括各种计算资源,其中一种类型的计算资源可包括服务器计算机,该服务器计算机包括可配置逻辑平台。可配置逻辑平台可以由计算机系统的用户编程或配置,使得计算资源的硬件(例如,可配置逻辑)由用户定制。例如,用户可以对可配置逻辑进行编程,使其充当紧密耦合到服务器计算机的硬件加速器。例如,硬件加速器可以通过服务器计算机的本地互连(例如外围组件互连快速(PCI-Express或PCIe))访问。用户可以在服务器计算机上执行应用程序,并且应用程序的任务可以由硬件加速器使用PCIe事务来执行。通过将硬件加速器紧密耦合到服务器计算机,可以减少加速器与服务器计算机之间的延迟,这可以潜在地提高应用程序的处理速度。
计算服务提供者可以使用软件服务来管理计算资源,以管理可配置硬件的配置和操作。作为一个示例,计算服务提供者可以执行逻辑存储库服务,用于摄取用户的硬件或逻辑设计,生成用于基于用户的逻辑设计配置可配置逻辑平台的经验证的配置数据,并且响应于配置可配置逻辑平台的实例的请求而下载经验证的配置数据。下载请求可以来自开发逻辑设计的用户,也可以来自已获得使用逻辑设计许可的用户。因此,逻辑设计可以由计算服务提供者、用户或与用户或计算服务提供者分开的第三方创建。例如,可以向计算服务提供者的用户提供加速器知识产权(IP)的市场,并且用户可以通过从市场中选择加速器来潜在地提高其应用程序的速度。
通过使用逻辑储存库服务来验证逻辑设计符合计算服务提供者的要求,计算服务提供者可潜在地增加计算资源的安全性和/或可用性。例如,逻辑储存库服务可以检查用户创建的逻辑设计(客户逻辑或应用程序逻辑)是否与计算服务提供者提供的主机逻辑兼容。当配置可配置逻辑平台时,主机逻辑和应用程序逻辑都可以加载到可配置逻辑平台上。主机逻辑可以为应用程序逻辑在其中工作的提供框架或沙盒。特别地,主机逻辑可以与应用程序逻辑通信并约束应用程序逻辑的功能以潜在地增加计算资源的安全性和/或可用性。例如,主机逻辑可以在本地互连(例如,PCIe互连)与应用程序逻辑之间执行桥接功能,使得应用程序逻辑不能直接控制本地互连上的信令。主机逻辑可以负责在本地互连上形成分组或总线事务,并确保满足协议要求。通过控制本地互连上的事务,主机逻辑可以潜在地防止形态异常的事务或事务到越界位置。
图1是示出系统100的示例的系统图,系统100包括用于管理可用于配置计算资源120内的可配置资源的配置数据的逻辑储存库服务110。特别地,逻辑储存库服务110可用于摄取主机和应用程序逻辑到计算服务提供者的基础结构中,基于所摄取的设计生成配置数据,维护所摄取的设计和生成的配置数据的储存库,以及在部署资源时为可配置的计算资源提供配置数据。
逻辑储存库服务110可以是网络可访问的服务,例如web服务。Web服务通常用于云计算。web服务是通过web或云在网络地址处提供的软件功能。客户端向服务器发起web服务请求,服务器处理请求并返回适当的响应。通常使用例如API请求来发起客户端web服务请求。出于简化的目的,下面通常将web服务请求描述为API请求,但是应当理解,可以进行其他web服务请求。API请求是定义的请求-响应消息系统的编程接口,通常以JSON或XML表示,通过Web最常见的是通过基于HTTP的web服务器公开。因此,在某些实现方式中,API可以被定义为一组超文本传输协议(HTTP)请求接口,以及用于调用API的消息和响应消息的结构的定义,其可以是可扩展标记语言(XML)或JavaScript对象表示法(JSON)格式。API可以指定执行动作的一组函数或例程,包括完成特定任务或允许与软件组件交互。当web服务从客户端设备接收API请求时,web服务可以生成对该请求的响应,并将响应发送到请求中标识的端点。附加地或替代地,web服务可以响应于API请求而执行动作,而不生成对请求中标识的端点的响应。
逻辑储存库服务110可以接收API请求130以生成用于可配置硬件平台的配置数据,例如服务器计算机140的可配置硬件142。例如,API请求130可以由开发者或计算服务提供者的合作伙伴用户始发。请求130可以包括用于指定关于逻辑设计、可配置硬件平台、用户信息、访问权限、生产状态的数据和/或元数据的字段以及用于描述关于逻辑储存库服务110的输入、输出和用户的信息的各种附加字段。作为具体示例,该请求可以包括设计、生产状态(例如试用或生产)、服务的输入或输出的加密状态、对用于存储输入文件(例如硬件设计源代码)的位置的引用、输入文件的类型、可配置硬件的实例类型以及对存储输出文件或报告的位置的引用的描述。特别地,该请求可以包括对硬件设计的引用,该硬件设计指定用于在可配置硬件平台上实现的应用程序逻辑132。具体地,应用程序逻辑132和/或主机逻辑134的规范可以是文件的集合,诸如源代码、由逻辑综合工具生成的网表和/或由布局布线工具生成的布局布线逻辑门。源代码可以包括用硬件描述语言(HDL)、寄存器传输逻辑(RTL)语言或诸如开放计算语言(OpenCL)或C的高级语言编写的代码。
计算资源120可以包括按实例类型分类的许多不同类型的硬件和软件。特别地,实例类型指定资源的硬件和软件的至少一部分。例如,硬件资源可以包括具有不同性能级别(例如,不同时钟速度、架构、高速缓存大小等)的中央处理单元(CPU)的服务器,具有和不具有协处理器(诸如图形处理单元(GPU)可配置逻辑)的服务器,具有不同容量和性能的内存和/或本地存储的服务器,以及具有不同联网性能级别的服务器。示例软件资源可以包括不同的操作系统、应用程序和驱动程序。一个示例实例类型可以包括服务器计算机140,其包括与可配置硬件142通信的中央处理单元(CPU)144。可配置硬件142可以包括可编程逻辑,例如FPGA、可编程逻辑阵列(PLA)、可编程阵列逻辑(PAL)、通用阵列逻辑(GAL)或复杂可编程逻辑器件(CPLD)。作为具体示例,“F1.small”实例类型可以包括具有一个FPGA资源容量单位的第一类服务器计算机,“F1.medium”实例类型可以包括具有两个FPGA资源容量单位的第一类服务器计算机,“F1.large”实例类型可以包括具有八个FPGA资源容量单位的第一类服务器计算机,“F2.large”实例类型可以包括具有八个FPGA资源容量单位的第二类服务器计算机。
逻辑储存库服务110可以响应于接收到API请求130而生成配置数据136。生成的配置数据136可以基于应用程序逻辑132和主机逻辑134。具体地,生成的配置数据136可以包括可用于编程或配置可配置硬件142的信息,以便其执行由应用程序逻辑132和主机逻辑134指定的功能。作为一个示例,计算服务提供者可以生成主机逻辑134,包括用于在CPU144与可配置硬件142之间接口的逻辑。具体地,主机逻辑134可以包括用于掩蔽或屏蔽应用程序逻辑132而不直接与CPU 144通信的逻辑,使得所有CPU应用程序逻辑事务都通过主机逻辑134。因此,主机逻辑134可以潜在地降低可由应用程序逻辑132引入的安全性和可用性风险。
生成配置数据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的生成。
生成配置数据136可以包括将应用程序逻辑132和主机逻辑134的源代码编译和/或转换成可以用于编程或配置可配置硬件142的数据。例如,逻辑储存库服务110可以将应用程序逻辑132集成到主机逻辑134包装器中。具体地,应用程序逻辑132可以在包括应用程序逻辑132和主机逻辑134的系统设计中被实例化。可以使用逻辑合成程序来合成集成系统设计,以创建用于系统设计的网表。可以使用布局布线程序来对网表进行布局和布线,以用于为系统设计指定的实例类型。布局布线的设计可以转换为配置数据136,配置数据136可以用于对可配置硬件142进行编程。例如,配置数据136可以直接从布局布线程序输出。
作为一个示例,所生成的配置数据136可以包括用于配置FPGA的全部或部分可配置逻辑的完整或部分比特流。FPGA可以包括可配置逻辑和不可配置逻辑。可配置逻辑可包括可编程逻辑块,其包括组合逻辑和/或查找表(LUT)和顺序逻辑元件(诸如触发器和/或锁存器),可编程路由和时钟资源,可编程分布式和块随机存取存储器(RAM),数字信号处理(DSP)比特切片和可编程输入/输出引脚。可以使用配置逻辑(例如,配置访问端口)将比特流加载到可配置逻辑的片上存储器中。加载在片上存储器内的值可用于控制可配置逻辑,使得可配置逻辑执行由比特流指定的逻辑功能。另外,可配置逻辑可以被分成不同的区域,这些区域可以彼此独立地配置。作为一个示例,可以使用完整比特流来跨所有区域配置可配置逻辑,并且可以使用部分比特流来仅配置可配置逻辑区域的部分。不可配置逻辑可以包括在FPGA内执行特定功能的硬宏,例如输入/输出块(例如,串行器和解串器(SERDES)块和千兆位收发器)、模数转换器、存储器控制块、测试访问端口以及用于将配置数据加载到可配置逻辑上的配置逻辑。
逻辑储存库服务110可以将生成的配置数据136存储在逻辑储存库数据库150中。逻辑储存库数据库150可以存储在可移动或不可移动介质上,包括磁盘、直连存储、网络附连存储(NAS)、存储区域网络(SAN)、独立磁盘冗余阵列(RAID)、磁带或盒式磁带、CD-ROM、DVD或任何其他可用于以非暂时性方式存储信息并且能够由逻辑储存库服务110访问的介质。另外,逻辑储存库服务110可以用于存储输入文件(例如应用程序逻辑132和主机逻辑134的规范)和关于逻辑设计和/或逻辑储存库服务110的用户的元数据。所生成的配置数据136可以由一个或多个属性索引,诸如例如用户标识符、一个实例类型或多个实例类型、市场标识符、机器映像标识符和可配置硬件标识符。
逻辑储存库服务110可以接收API请求160以下载配置数据。例如,当计算资源120的用户在计算资源120内启动或部署新实例(例如,“F1.small”实例)时,可以生成请求160。作为另一示例,请求160可以是响应于在操作实例上执行的应用程序的请求而生成。请求160可以包括对源和/或目的地实例的引用,对要下载的配置数据的引用(例如,实例类型、市场标识符、机器映像标识符或可配置硬件标识符)、用户标识符、授权令牌和/或用于识别要下载的配置数据和/或授权对配置数据的访问的其他信息。如果请求配置数据的用户被授权访问配置数据,则可以从逻辑储存库数据库150检索配置数据,并且可以将经验证的配置数据162(例如,完整或部分比特流)下载到请求实例(例如,服务器计算机140)。经验证的配置数据162可用于配置目的地实例的可配置逻辑。
逻辑储存库服务110可以验证经验证的配置数据162可以下载到请求实例。验证可以由逻辑储存库服务110在多个不同点发生。例如,验证可以包括核验应用程序逻辑132与主机逻辑134兼容。特别地,可以在模拟器上执行回归测试套件以核验在将应用程序逻辑132添加到设计之后,主机逻辑134按预期执行。附加地或替代地,可以验证应用程序逻辑132被指定仅驻留在与主机逻辑134的可重新配置区域分开的可重新配置区域中。作为另一示例,验证可以包括验证签名和加密的配置数据162与要下载的实例类型兼容。作为另一示例,验证可以包括验证请求者被授权访问经验证的配置数据162。如果任何验证检查失败,则逻辑储存库服务110可以拒绝下载经验证的配置数据162的请求。因此,逻辑储存库服务110可以潜在地保护计算资源120的安全性和可用性,同时使用户能够定制计算资源120的硬件。
图2是示出逻辑储存库服务205的示例架构200的系统图。逻辑储存库服务205可以是在由计算服务提供者管理的服务器计算机上执行的软件。可以通过一个或多个web API访问逻辑储存库服务205。
逻辑储存库服务205可以包括提供者接口210,用于服务计算服务提供者的API请求。提供者接口210可用于认证来自计算服务提供者的代理的请求,例如通过使用请求中提供的凭证来认证请求者的身份。提供者接口210可以提供主机逻辑摄取功能215。具体地,提供者接口210可以接收将主机逻辑设计上载到逻辑储存库服务205的请求,并且该请求可以由主机逻辑摄取功能215处理。如前所述,主机逻辑可以包括用于沙盒化应用程序逻辑以维持计算资源的安全性和可用性的逻辑。另外,主机逻辑可以进一步分为静态逻辑和可重新配置逻辑。可以在初始化序列期间(例如,在引导时)配置静态逻辑,而可以在可配置逻辑的操作期间的不同时间配置可重新配置逻辑。作为一个示例,PCI Express接口可以指定在取消置位复位信号之后大约一百毫秒内引导和枚举PCI端点。主机逻辑可以分为可以在分配的时间窗口内加载的静态逻辑,以及可以在时间窗口过去之后加载的可重新配置的逻辑。静态逻辑可以用作不同可重新配置区域之间的接口。可以使用HDL或寄存器传输逻辑(RTL)源代码(例如Verilog或VHDL)来指定主机逻辑设计。RTL可以加密或不加密。主机逻辑摄取模块215可用于对接收的主机逻辑设计执行检查,解密主机逻辑设计,和/或提供主机逻辑设计的版本控制信息。另外,该请求可以包括用于将主机逻辑设计与一个或多个实例类型相关联的信息。例如,一些主机逻辑设计可以仅与实例类型的一个子集一起工作,而其他主机逻辑设计可以仅与实例类型的不同子集一起工作。
逻辑储存库服务205可以包括用于服务来自逻辑储存库服务205的用户的API请求的客户-开发者接口220。客户-开发者接口220可以用于认证请求来自计算服务提供者的用户,例如通过使用请求中提供的凭证来认证请求者的身份。例如,可以向每个用户提供可以用于识别用户以进行访问管理、计费和使用跟踪的帐户。用户可以限于仅查看和修改他们被授权访问的逻辑设计。例如,可以防止用户上载和/或修改主机逻辑。
客户-开发者接口220可以包括用于接收和/或处理应用程序逻辑设计的应用程序逻辑摄取功能225。可以使用源代码(例如,HDL或RTL代码)、包括可配置逻辑块列表和可配置逻辑块之间的连接和/或配置数据的网表来指定应用程序逻辑设计。例如,配置数据可以包括在上载到逻辑储存库服务之前已经预编译的完整或部分比特流。应用程序逻辑将与主机逻辑(例如通过配置数据生成块230)组合以创建可加载到可配置硬件平台上的逻辑。处理应用程序逻辑设计可以包括将源代码翻译和/或编译为较低级格式(例如,编译OpenCL以生成行为或结构Verilog),核验存在所需的逻辑和/或信号(例如到主机逻辑的接口信号),核验不存在已知的受限电路(例如环形振荡器),以及准备生成配置数据的其他各种任务。
客户-开发者接口220可以接受来自用户的各种类型的请求。作为一个示例,用户可以请求创建可配置硬件映像(CHI)。CHI可以提供用于在计算环境内配置可配置硬件的实例的信息。例如,CHI可以包括一个或多个兼容的实例类型,用于配置可配置硬件的配置数据,用于控制对CHI的访问的访问许可,以及与配置可配置硬件相关联的任何其他信息。创建CHI的请求可以包括设计描述或标题的字段,设计的生产状态,设计是否加密,对设计源代码的引用,源代码指示符的类型,实例类型或与配置数据兼容的类型,以及对存储报告信息的位置的引用。
作为另一示例,第二请求类型可用于检索关于与用户相关联的CHI的信息。特别地,该请求可以包括诸如CHI标识符、机器映像(MI)标识符、产品代码、实例类型和实例标识符的字段。响应于该请求,客户-开发者接口220可以呈现关于与用户相关联的CHI的信息,该信息匹配请求中的一个或多个字段。例如,可以列出与搜索字段匹配的所有CHI以及与每个CHI相关联的状态。可以报告CHI处于试验或生产状态,或处于完成或正在进行中的状态。例如,从源代码创建CHI可能需要几个小时,因此该请求可用于检查CHI的合成或实现状态。
作为另一示例,第三类型的请求可以是将CHI与MI相关联。MI可以提供用于在计算环境内启动计算资源的实例的信息。在一个实施例中,该实例是在计算环境内的服务器计算机上执行的管理程序内执行的虚拟机。MI可以包括一种类型的实例(例如通过指定体架构、CPU能力、协处理器、外围设备和/或可配置硬件设计),用于实例的根卷的模板(例如,包括操作系统、设备驱动程序和/或应用程序),以及用于控制MI的可访问性的访问许可(例如,被授权使用MI的帐户的列表),以及用于指定启动时要附加到实例的卷的块设备映射。通过将MI与CHI相关联,当启动基于MI的虚拟机时,可以将与CHI相关联的可配置数据下载到服务器计算机的可配置逻辑。
作为另一示例,第四类型的请求可以是将CHI发布到市场。例如,产品代码可以与CHI相关联,这可以使CHI能够在市场中列出。市场可以由计算服务提供者的用户查看,并且可以提供由一个用户开发并且可用于许可或由另一用户购买的硬件加速器IP的列表。当用户购买或许可在市场上发布的CHI时,可以将用户的帐户信息添加到可以访问CHI的用户列表中。
配置数据生成块230可用于创建配置数据。例如,配置数据可以基于应用程序逻辑设计和主机逻辑设计。作为另一示例,配置数据可以仅基于应用程序逻辑设计或仅基于主机逻辑设计。特别地,配置数据生成块230可以仅基于主机逻辑设计来生成静态逻辑。另外,配置数据生成块230可以为可配置逻辑的一个或多个可重新配置区域生成可重新配置逻辑。例如,配置数据生成块230可用于针对为主机功能保留的区域生成主机可重新配置逻辑。作为另一示例,配置数据生成块230可用于生成主要为应用功能保留的区域的应用可重新配置逻辑。
配置数据生成块230的输入可以是应用程序逻辑设计(诸如来自应用程序逻辑摄取225),主机逻辑设计(诸如来自主机逻辑摄取215),和/或描述各种实现详细信息(例如时钟频率、分区信息、放置信息、目标技术等)的约束。逻辑设计可以包括使用HDL、网表和/或配置数据描述的源代码。配置数据生成块230可以将应用程序和主机设计组合成一个设计以创建配置数据。如参考图3更详细地描述的那样,配置数据生成块230可以包括逻辑综合工具和布局布线工具。使用这些工具,配置数据生成块230可以创建用于在可配置硬件平台上加载的配置数据。
可以使用逻辑库管理块240来管理来自配置数据生成块230的输出。例如,逻辑库管理块240可以将用户信息与配置数据相关联并将信息存储在逻辑储存库数据库250中。逻辑库管理块240可用于维护各种逻辑组件和源输入文件的所有权和版本控制。逻辑库管理块240可以对设计源代码文件和CHI文件执行加密和解密,以便可以在逻辑储存库数据库250处加密存储文件。通过加密文件,可以保护不同用户的知识产权。
计算服务接口260可以用作逻辑储存库服务205与计算资源之间的接口。例如,当在计算资源上创建实例时,可以将API请求发送到计算服务接口260,并且可以将配置数据下载到请求资源。第一类请求可以响应于在计算资源的服务器计算机上发起或部署新实例。例如,在服务器计算机的互连上枚举可配置逻辑之前,请求可以用于加载和引导静态逻辑。特别地,该请求可以由静态逻辑下载块265提供服务,静态逻辑下载块265可以经由逻辑库管理块240从逻辑储存库数据库250检索配置数据。静态逻辑下载组件265可以用于将静态逻辑下载到请求实例上的可配置硬件平台。另外,请求可以用于可重新配置逻辑,并且可重新配置逻辑下载组件264可以用于服务该请求。具体地,可重新配置逻辑下载可以经由逻辑库管理块240通过逻辑储存库数据库250检索配置数据。该请求可以用于可重新配置的主机逻辑或用于可重新配置的应用程序逻辑。对可重新配置逻辑的请求可以响应于在计算资源的服务器计算机上发起或部署新实例。可替代地,对可重新配置逻辑的请求可以响应于在服务器计算机上运行的客户端应用程序请求可重新配置逻辑。例如,在服务器计算机上运行的应用程序可以请求在程序的不同点处将不同的硬件加速器下载到可配置硬件平台。计算服务接口260可以对请求进行认证,使得只有具有检索可配置逻辑数据的访问权限的用户才能下载配置数据。例如,请求可以包括授权令牌,并且如果授权令牌与预期的授权令牌匹配,则可以服务该请求。否则,可以拒绝该请求。
计算服务接口260还可用于从计算资源接收信息。例如,当在计算资源上创建,重新配置或使用实例时,计算服务接口260可以从计算资源接收状态更新。作为特定示例,可以向计算服务接口260通知配置数据是否成功部署在计算资源上。例如,由于硬件故障或其他原因,配置数据可能无法部署。计算服务接口260结合逻辑库管理块240可以维护关于存储在逻辑储存库数据库250中的不同设计的使用数据、故障报告和/或统计。例如,当在提供者接口210或客户/开发者接口220处接收到请求时,可以根据需要将统计提供给计算服务提供者或用户。
图3示出了可以由逻辑储存库服务执行的摄取逻辑设计和生成配置数据的示例流程300。在摄取310期间,逻辑储存库服务可以接收应用程序逻辑设计和/或主机逻辑设计。逻辑设计可以加密,例如使用IEEE1735-2014加密标准。逻辑设计可以在摄取310期间或在流程300的后续步骤期间被解密。
作为一个示例,可以在摄取310期间接收应用程序逻辑和主机逻辑的源代码,并且可以将应用程序逻辑和主机逻辑组合成单个设计以产生用于逻辑合成320的源代码。逻辑合成320可用于基于目标技术将以行为和/或结构RTL编写的规范转换为网表。例如,逻辑合成320可以瞄准不同的可配置逻辑技术,例如具有不同架构、制造工艺、容量和/或制造商的FPGA。网表可包括多个可配置逻辑块、不可配置块(例如,硬宏)以及不同块之间的连接。网表可以是逻辑网表,其中网表的块被枚举但在目标技术中未被放置。网表可以用作布局和布线330的输入。布局和布线330可以从网表和路由信息中获取可配置块的实例,并将块映射到物理设备。布局布线设计可以包括网表的每个逻辑组件的物理映射。附加地或替代地,布局和布线330可以是时序驱动的,以便基于设计的时序约束和物理设备的物理约束来修改网表。布局和布线330的输出可以是配置数据,例如比特流图像。配置数据可以被分区或分成不同的组件。例如,配置数据可以包括与静态主机逻辑、可重新配置主机逻辑和/或可重新配置应用程序逻辑相关联的数据。不同的组件可以重叠或不重叠。例如,静态主机逻辑可以通过可重新配置的应用程序逻辑使用的区域进行路由。因此,可重新配置应用程序逻辑的部分比特流还可以包括静态主机逻辑的部分。
作为另一示例,可以在摄取310期间接收应用程序逻辑和/或主机逻辑的网表。作为具体示例,可以为应用程序逻辑接收网表,并且可以为主机逻辑接收源代码。在这种情况下,主机逻辑可以与逻辑合成320合成以生成主机逻辑的网表,并且主机逻辑和应用程序逻辑的网表可以组合成单个设计以产生用于布局和布线330的网表。作为另一示例,可以在摄取310期间接收应用程序逻辑和/或主机逻辑的配置数据。例如,可以接收用于应用程序逻辑设计的部分比特流,或者可以接收用于主机逻辑和应用程序逻辑的完整比特流。
逻辑储存库服务还可以包括库管理和验证340功能。例如,流程300的每个步骤可以生成可以存储在数据库中的中间数据和/或文件。特别是,数据库可以由开发者的帐户标识符编制索引,以便开发者可以访问与开发者关联的源代码、报告和配置数据。作为一个示例,应用程序逻辑的源代码可以在摄取310期间与开发者的帐户标识符相关联。源代码可以与开发者提供的或在摄取310期间生成的版本标识符相关联。源代码的多个版本可以针对帐户维护并存储在数据库中。每个版本的应用程序逻辑可以与主机逻辑的版本相关联。配置数据的每个版本可以对应于应用程序逻辑的特定版本和主机逻辑的特定版本。当生成配置数据时,可以创建比特流或CHI标识符,并且可以使用CHI标识符标记源代码、网表和报告。可以在流程300的各个步骤生成报告,以提供关于逻辑设计的信息。例如,一个或多个合成报告可以由逻辑合成320生成,并且一个或多个报告可以由布局和布线330生成。作为一个示例,可以生成实现报告以提供关于逻辑设计的利用的信息。特别是,可以提供设计使用的硬件资源的百分比,以便可以在适当的实例类型上实现设计。
作为另一示例,时序报告可以提供静态时序分析,其示出设计是否满足可配置硬件的时序规范。逻辑合成320以及布局和布线330可以涉及随着工具的每次运行而变化的随机的非确定性步骤,使得逻辑合成320以及布局和布线330的每次运行可以提供不同的结果。因此,如果开发者具有不满足时序的设计(如时序报告所示),则开发者可能希望重新运行逻辑合成320和/或布局和布线330。以这种方式,开发者可以通过针对相同设计执行多个合成和路由运行来迭代他们的设计。当合成以及布局和布线中的一个运行产生满足可配置硬件逻辑的时序规范的结果时,开发者可以将该运行标记为生产运行。例如,开发者可以将从该运行生成的CHI的状态更改为生产,并且可以将比特流标识符与生成的配置数据相关联。
库管理和验证340功能可用于在开发和部署步骤期间的各个点处验证可配置逻辑的用户设计。作为一个示例,验证340可以包括执行模拟以核验应用程序逻辑是否与主机逻辑兼容,使得主机逻辑可以约束应用程序逻辑的功能。验证340可以包括比较应用程序逻辑的网表并确认应用程序逻辑满足可配置硬件平台的容量和区域限制。例如,可以限制应用程序逻辑仅使用一个或多个可重新配置区域内的逻辑。如果应用程序逻辑位于这些区域之外,则可以拒绝应用程序逻辑。另外,应用程序逻辑可以作为比特流被摄取,并且比特流可以由验证340验证。比特流的验证可以包括将对应于主机逻辑的摄取比特流数据的一部分与主机逻辑的基线版本进行比较以确认主机逻辑未损坏。验证块340的输出可以是经验证的配置数据。
图4是基于网络的计算服务提供者400的计算系统图,其示出了可以使用本文描述的实施例的一个环境。作为背景,计算服务提供者400(即,云提供者)能够将计算和存储容量作为服务递送到最终接收者社区。在示例实施例中,可以由组织或代表组织为组织建立计算服务提供者。也就是说,计算服务提供者400可以提供“私有云环境”。在另一实施例中,计算服务提供者400支持多租户环境,其中多个客户独立地操作(即,公共云环境)。一般而言,计算服务提供者400可以提供以下模型:基础设施即服务(“IaaS”),平台即服务(“PaaS”)和/或软件即服务(“SaaS”)。可以提供其他模型。对于IaaS模型,计算服务提供者400可以将计算机提供为物理或虚拟机和其他资源。虚拟机可以由管理程序作为访客运行,如下面进一步描述的。PaaS模型提供了一个计算平台,可以包括操作系统、编程语言执行环境、数据库和web服务器。应用程序开发者可以在计算服务提供者平台上开发和运行他们的软件解决方案,而无需购买和管理底层硬件和软件。此外,应用程序开发者可以在计算服务提供者平台的可配置硬件上开发和运行其硬件解决方案。SaaS模型允许在计算服务提供者中安装和操作应用软件。在一些实施例中,最终用户使用运行web浏览器或其他轻量级客户端应用程序的联网的客户端设备访问计算服务提供者400,例如台式计算机、膝上型计算机、平板电脑、智能手机等。本领域技术人员将认识到,计算服务提供者400可以被描述为“云”环境。
具体示出的计算服务提供者400包括多个服务器计算机402A-402C。虽然只显示了三台服务器计算机,但可以使用任何数量,大型中心可以包含数千台服务器计算机。服务器计算机402A-402C可以提供用于执行软件实例406A-406C的计算资源。在一个实施例中,软件实例406A-406C是虚拟机。如本领域中已知的,虚拟机是执行诸如物理机器之类的应用程序的机器(即计算机)的软件实现的实例。在虚拟机的示例中,服务器402A-402C中的每一个可以被配置为执行管理程序408或被配置为使得能够在单个服务器上执行多个软件实例406的另一类型的程序。另外,每个软件实例406可以被配置为执行一个或多个应用程序。
应当理解,尽管本文公开的实施例主要在虚拟机的上下文中描述,但是其他类型的实例可以与本文公开的概念和技术一起使用。例如,这里公开的技术可以与存储资源、数据通信资源以及其他类型的计算资源一起使用。这里公开的实施例还可以在不利用虚拟机实例的情况下直接在计算机系统上执行应用程序的全部或部分。
服务器计算机402A-402C可以包括不同硬件资源或实例类型的异构集合。一些硬件实例类型可以包括可配置硬件,其至少部分地可由计算服务提供者400的用户配置。实例类型的一个示例可以包括与可配置硬件404A通信的服务器计算机402A。具体地,服务器计算机402A和可配置硬件404A可以通过诸如PCIe的本地互连进行通信。实例类型的另一示例可包括服务器计算机402B和可配置硬件404B。例如,可配置逻辑404B可以集成在多芯片模块内或与服务器计算机402B的CPU集成在同一管芯上。实例类型的又一个示例可以包括没有任何可配置硬件的服务器计算机402C。因此,具有和不具有可配置逻辑的硬件实例类型可以存在于计算服务提供者400的资源内。
可以保留一个或多个服务器计算机420用于执行用于管理服务器计算机402和软件实例406的操作的软件组件。例如,服务器计算机420可以执行管理组件422。客户可以访问管理组件422以配置由客户购买的软件实例406的操作的各个方面。例如,客户可以购买,出租或租赁实例,并对软件实例的配置进行更改。每个软件实例的配置信息可以作为机器映像(MI)442存储在网络附连存储设备440上。具体地,MI 442描述用于启动VM实例的信息。MI可以包括用于实例的根卷的模板(例如,OS和应用程序),用于控制哪些客户帐户可以使用MI的启动许可,以及指定在实例启动时附加到实例的卷的块设备映射。MI还可以包括对在实例启动时加载在可配置硬件404上的可配置硬件映像(CHI)442的引用。CHI包括用于编程或配置可配置硬件404的至少一部分的配置数据。
客户还可以指定关于如何响应于需求来缩放所购买的实例的设置。管理组件还可以包括用于实现客户策略的策略文档。自动缩放组件424可以基于客户定义的规则来缩放实例406。在一个实施例中,自动缩放组件424允许客户指定用于确定何时应实例化新实例的放大规则和用于确定何时应终止现有实例的缩小规则。自动缩放组件424可以包括在不同服务器计算机402或其他计算设备上执行的多个子组件。自动缩放组件424可以监视内部管理网络上的可用计算资源,并根据需要修改可用资源。
部署组件426可用于帮助客户部署计算资源的新实例406。部署组件可以访问与实例相关联的帐户信息,例如谁是帐户的所有者、信用卡信息、所有者的国家等。部署组件426可以从客户接收包括描述应如何配置新实例406的数据的配置。例如,配置可以指定要在新实例406中安装的一个或多个应用程序,提供要执行以配置新实例406的脚本和/或其他类型的代码,提供指定应如何准备应用程序高速缓存的高速缓存逻辑,以及其他类型的信息。部署组件426可以利用客户提供的配置和高速缓存逻辑来配置,填充和启动新实例406。配置、高速缓存逻辑和其他信息可以由客户使用管理组件422或通过直接提供该信息给部署组件426来指定。实例管理器可以被认为是部署组件的一部分。
客户帐户信息428可以包括与多租户环境的客户相关联的任何期望信息。例如,客户帐户信息可以包括客户的唯一标识符、客户地址、帐单信息、许可信息、用于启动实例的定制参数、调度信息、自动缩放参数、用于访问帐户的先前IP地址、可供客户访问的MI和CHI的列表等。
可以保留一个或多个服务器计算机430用于执行用于管理配置数据到服务器计算机402的可配置硬件404的下载的软件组件。例如,服务器计算机430可以执行包括摄取组件432、库管理组件434和下载组件436的逻辑储存库服务。摄取组件432可以接收主机逻辑和应用程序逻辑设计或规范,并生成可用于配置可配置硬件404的配置数据。库管理组件434可以是用于管理与逻辑储存库服务关联的源代码、用户信息和配置数据。例如,库管理组件434可用于将从用户的设计生成的配置数据存储在用户在网络附连存储设备440上指定的位置。特别地,配置数据可以存储在网络附连存储设备440上的可配置硬件映像442中。另外,库管理组件434可以管理输入文件的版本化和存储(诸如应用程序逻辑和主机逻辑的规范)以及关于逻辑设计和/或逻辑储存库服务的用户的元数据。例如,库管理组件434可以通过诸如用户标识符、实例类型、市场标识符、机器映像标识符和可配置硬件标识符之类的一个或多个属性来索引所生成的配置数据。下载组件436可用于认证对配置数据的请求,并在请求被认证时将配置数据发送到请求者。例如,当启动使用可配置硬件404的实例406时,服务器计算机402A-B上的代理可以向下载组件436发送请求。作为另一个示例,当实例406在可配置硬件404运行时请求可配置硬件404被部分重新配置时,服务器计算机402A-B上的代理可以向该下载组件436发送请求。
网络附连存储设备(NAS)440可用于提供存储空间和对存储在NAS440上的文件的访问。例如,NAS 440可包括用于使用网络文件共享协议,例如网络文件系统(NFS)处理请求的一个或多个服务器计算机。NAS 440可以包括可移动或不可移动介质,包括磁盘、存储区域网络(SAN)、独立磁盘冗余阵列(RAID)、磁带或盒式磁带、CD-ROM、DVD或可以用于以非暂时方式存储信息并且可以通过网络450访问的任何其他介质。
网络450可用于互连服务器计算机402A-402C、服务器计算机420和430以及存储设备440。网络450可以是局域网(LAN)并且可以连接到广域网(WAN)460,使得最终用户可以访问计算服务提供者400。应当理解,已经简化了图4中所示的网络拓扑结构可以包括网络拓扑,并且可以利用更多的网络和联网设备来互连这里公开的各种计算系统。
图5示出了示例系统500的进一步细节,该示例系统500包括用于配置和接口到可配置硬件平台510的控制平面和数据平面的组件。控制平面包括用于初始化,监视,重新配置和拆除可配置硬件平台510的功能。数据平面包括用于在用户的应用程序与可配置硬件平台510之间进行通信的功能。控制平面可以由具有较高特权级别的用户或服务访问,并且数据平面可以由具有较低特权级别的用户或服务访问。在一个实施例中,可配置硬件平台510使用诸如PCIe的本地互连连接到服务器计算机520。在备选实施例中,可配置硬件平台510可以集成在服务器计算机520的硬件内。作为一个示例,服务器计算机520可以是图4的计算服务提供者400的多个服务器计算机402A-402B中的一个。
服务器计算机520具有底层硬件522,其包括一个或多个CPU、存储器、存储设备、互连硬件等。在硬件522上方运行层是管理程序或内核层524。管理程序或内核层可以被分类为类型1或类型2管理程序。类型1管理程序直接在主机硬件522上运行以控制硬件并管理访客操作系统。类型2管理程序在传统的操作系统环境中运行。因此,在类型2环境中,管理程序可以是在操作系统上方运行的不同层,并且操作系统与系统硬件交互。不同类型的管理程序包括基于Xen,Hyper-V,ESXi/ESX,Linux等,但也可以使用其他管理程序。管理分区530(诸如Xen管理程序的域0)可以是管理程序的一部分或者与管理程序分离,并且通常包括访问硬件522所需的设备驱动程序。用户分区540是管理程序内的逻辑隔离单元。每个用户分区540可以被分配硬件层的存储器、CPU分配、存储、互连带宽等的其自己的部分。另外,每个用户分区540可以包括虚拟机和它自己的访客操作系统。这样,每个用户分区540是被设计为独立于其他分区来支持其自己的虚拟机的容量的抽象部分。
管理分区530可用于为用户分区540和可配置硬件平台510执行管理服务。管理分区530可与计算服务提供者、用户分区540和可配置硬件平台510的web服务(例如部署服务、逻辑储存库服务550和健康监视服务)进行通信。管理服务可以包括用于启动和终止用户分区540的服务,以及配置,重新配置和拆除可配置硬件平台510的可配置逻辑的服务。作为特定示例,管理分区530可以响应于来自部署服务(例如图4的部署组件426)的请求来启动新用户分区540。该请求可以包括对MI和/或CHI的引用。MI可以指定要加载在用户分区540上的程序和驱动程序,并且CHI可以指定要加载在可配置硬件平台510上的配置数据。管理分区530可以基于与MI相关联的信息来初始化用户分区540并且使得与CHI相关联的配置数据被加载到可配置硬件平台510上。用户分区540和可配置硬件平台510的初始化可以同时发生,从而可以减少使实例运行的时间。
管理分区530可用于管理可配置硬件平台510的编程和监视。通过此目的使用管理分区530,可以限制对可配置硬件平台510的配置数据和配置端口的访问。具体地,可以限制具有较低权限级别的用户直接访问管理分区530。因此,在不使用计算服务提供者的基础结构的情况下不能修改可配置逻辑,并且可以保护用于编程可配置逻辑的任何第三方IP免受未经授权的用户查看。
管理分区530可以包括用于控制平面的软件栈,以配置和接口到可配置硬件平台510。控制平面软件栈可以包括用于与web服务(例如,逻辑储存库服务550和健康监视服务)、可配置硬件平台510和用户分区540通信的可配置逻辑(CL)应用管理层532。例如,CL应用管理层532可以向逻辑储存库服务550响应于正在启动用户分区540而发出请求以获取配置数据。CL应用管理层532可以使用硬件522的共享存储器或者通过将服务器计算机520连接到可配置硬件平台510的互连发送和接收分区间消息来与用户分区540通信。具体地,CL应用管理层532可以将消息读取和写入可配置硬件平台510的邮箱逻辑511。消息可以包括最终用户应用程序541请求重新配置或拆除可配置硬件平台510。CL应用管理层532可以响应于重新配置可配置硬件平台510而向逻辑储存库服务550发出请求,请求获取配置数据。CL应用管理层532可响应于拆除可配置硬件平台510的请求而发起拆除序列。CL应用管理层532可以执行看门狗相关的活动来确定到用户分区540的通信路径是否有效。
控制平面软件栈可以包括CL配置层534,用于访问可配置硬件平台510的配置端口512(例如,配置访问端口),使得配置数据可以被加载到可配置硬件平台510上。例如,CL配置层534可以发送一个或多个命令到配置端口512以执行可配置硬件平台510的完全或部分配置。CL配置层534可以发送配置数据(例如,比特流)到配置端口512,使得可配置逻辑可以根据配置数据被编程。配置数据可以指定主机逻辑和/或应用程序逻辑。
控制平面软件栈可以包括管理驱动程序536,用于通过将服务器计算机520连接到可配置硬件平台510的物理互连进行通信。管理驱动程序536可以封装源自管理分区530的命令、请求、响应、消息和数据,用于通过物理互连进行传输。另外,管理驱动程序536可以解封装通过物理互连发送到管理分区530的命令、请求、响应、消息和数据。具体地,管理驱动程序536可以与可配置硬件平台510的管理功能513通信。例如,管理功能513可以是在连接到物理互连的设备的枚举期间映射到地址范围的物理或虚拟功能。管理驱动程序536可以通过将事务寻址到分配给管理功能513的地址范围来与管理功能513进行通信。
控制平面软件栈可以包括CL管理和监视层538。CL管理和监视层538可以监视和分析在物理互连上发生的事务以确定可配置硬件平台510的健康状况和/或确定可配置硬件平台510的使用特性。例如,CL管理和监视层538可以监视配置数据是否成功部署在可配置硬件平台510上,并且可以使指示部署的状态的报告被发送到逻辑储存库服务550。
可配置硬件平台510可包括不可配置的硬宏和可配置逻辑。硬宏可以在可配置硬件平台510内执行特定功能,例如输入/输出块(例如,串行器和解串器(SERDES)块和千兆位收发器)、模数转换器、存储器控制块、测试访问端口和配置端口512。可以通过将配置数据加载到可配置硬件平台510上来编程或配置可配置逻辑。例如,配置端口512可以用于加载配置数据。作为一个示例,配置数据可以存储在配置端口512可访问的存储器(诸如闪存)中,并且配置数据可以在可配置硬件平台510的初始化序列期间(诸如在通电序列期间)被自动加载。另外,可以使用片外处理器或可配置硬件平台510内的接口来访问配置端口512。
可配置逻辑可以被编程为包括主机逻辑和应用程序逻辑。主机逻辑可以对最终用户屏蔽至少一些硬宏的接口,使得最终用户具有对硬宏和物理互连的有限访问。例如,主机逻辑可以包括邮箱逻辑511、配置端口512、管理功能513、主机接口514和应用功能515。最终用户可以使可配置应用程序逻辑516被加载到可配置硬件平台510,并且可以从用户分区540(通过应用功能515)与可配置应用程序逻辑516通信。
主机接口逻辑514可以包括用于在物理互连上发信号并实现通信协议的电路(例如,硬宏和/或可配置逻辑)。通信协议规定了通过互连进行通信的规则和消息格式。应用功能515可以用于与用户分区540的驱动程序进行通信。具体地,应用功能515可以是在连接到物理互连的设备的枚举期间映射到地址范围的物理或虚拟功能。应用程序驱动程序可以通过将事务寻址到分配给应用功能515的地址范围来与应用功能515进行通信。具体地,应用功能515可以与应用程序逻辑管理驱动程序542进行通信以在控制平面上交换命令、请求、响应、消息和数据。应用功能515可以与应用程序逻辑数据平面驱动程序543进行通信,以在数据平面上交换命令、请求、响应、消息和数据。
邮箱逻辑511可包括一个或多个缓冲器和一个或多个控制寄存器。例如,给定的控制寄存器可以与特定缓冲器相关联,并且寄存器可以用作信号量以在管理分区530与用户分区540之间进行同步。作为具体示例,如果分区可以修改该控制寄存器的值,则分区可以写入缓冲器。可以从管理功能513和应用功能515访问缓冲器和控制寄存器。当消息被写入缓冲器时,可以写入另一个控制寄存器(例如,消息就绪寄存器)以指示消息是完整的。消息就绪寄存器可以由分区轮询以确定是否存在消息,或者可以响应于消息就绪寄存器被写入而生成中断并将其发送到分区。
用户分区540可以包括用于将最终用户应用540接口到可配置硬件平台510的软件栈。应用软件栈可以包括用于与控制平面和数据平面通信的功能。具体地,应用软件栈可以包括CL应用API 544,用于向最终用户应用540提供对可配置硬件平台510的访问。CL应用API 544可以包括用于与可配置硬件平台510和管理分区530通信的方法或功能库。例如,最终用户应用程序541可以通过使用CL应用API 544的API将命令或数据发送到可配置应用程序逻辑516。特别地,CL应用API 544的API可以与应用程序逻辑(AL)数据平面驱动程序543接口,应用程序逻辑(AL)数据平面驱动程序543可以生成针对应用功能515的事务,该应用功能515可以与可配置的应用程序逻辑516进行通信。以这种方式,最终用户应用程序541可以使可配置的应用程序逻辑516接收,处理和/或响应数据以潜在地加速最终用户应用程序541的任务。作为另一个实例,最终用户应用程序541可以通过使用CL应用API 544的API将命令或数据发送到管理分区530。具体地,CL应用API 544的API可以与AL管理驱动程序542接口,AL管理驱动程序542可以生成针对应用功能515的事务,该应用功能515可以与邮箱逻辑511通信。以这种方式,最终用户应用程序541可以使管理分区530提供关于可配置硬件平台510的操作或元数据和/或请求重新配置可配置应用程序逻辑516。
结合管理程序或内核524的应用软件栈可用于限制最终用户应用程序541可通过物理互连执行的操作。例如,计算服务提供者可提供AL管理驱动程序542、AL数据平面驱动程序543和CL应用API 544(例如通过将文件与机器映像相关联)。通过仅允许具有比最终用户更高的权限级别的用户和服务对文件进行写入,可以保护这些组件免于修改。AL管理驱动程序542和AL数据平面驱动程序543可以被限制为仅使用应用功能515的地址范围内的地址。另外,输入/输出存储器管理单元(I/O MMU)可以将互连事务限制为在应用功能515或管理功能513的地址范围内。
图6是用于管理配置数据的示例方法600的流程图,该配置数据可用于在例如多租户环境中配置或编程可配置硬件。作为一个示例,方法600可以使用逻辑储存库服务来实现,例如参考图1-3所描述的。
在610处,可以接收第一请求以使用可配置硬件的应用程序逻辑的规范来生成用于可配置硬件的配置数据。应用程序逻辑的规范可以包括与应用程序逻辑相对应的源代码(例如,HDL或RTL源代码)、网表和/或配置数据。请求可以指定与配置数据关联的实例类型。该请求可以包括指示可以访问配置数据的用户的访问列表。该请求可以包括与应用程序逻辑一起使用的主机逻辑的版本。
在620处,可以为可配置硬件生成配置数据。生成配置数据可以包括核验应用程序逻辑符合计算服务提供者的一个或多个标准,将应用程序逻辑集成到主机逻辑包装器中,合成应用程序逻辑,和/或对应用程序逻辑进行布局和布线。配置数据可以包括用于在可配置硬件上实现应用程序逻辑和/或主机逻辑的数据。配置数据可以包括用于在可配置硬件的操作期间一次或多次实现多个组件的数据。例如,配置数据可以包括静态逻辑组件(在可配置硬件的初始化序列期间加载)和一个或多个可重新配置组件(在可配置硬件的初始化序列之后加载)。不同的可重新配置组件可以与可配置硬件的重叠或非重叠区域相关联。配置数据可以包括主机逻辑组件和/或应用程序逻辑组件。可以以一种或多种格式生成配置数据。作为一个示例,配置数据可以是完整或部分比特流。还可以生成与配置数据相关联的信息。例如,可以使用配置数据生成日志文件、实现报告和时序报告。开发者或设计系统可以使用实现和时序报告来修改,重新合成或重新布布局和布线可配置硬件的设计。
在630处,可以接收第二请求以将配置数据下载到包括可配置硬件的主机服务器计算机。例如,当启动新的虚拟机实例时,第二请求可以用于待下载到可配置硬件的静态逻辑(例如用于主机逻辑设计)。作为另一示例,在可配置硬件平台执行之后,该请求可以用于将可重新配置的逻辑下载到可配置硬件上。特别地,该请求可以用于对应于应用程序逻辑设计的配置数据。第二请求可以包括用于授权用户访问配置数据的信息。
在640处,配置数据可以响应第二请求发送到主机服务器计算机,以便可配置硬件配置主机逻辑和应用程序逻辑。特别地,配置数据可以被发送到主机服务器计算机的管理分区,并且管理分区可以使配置数据被加载到可配置硬件上。作为一个示例,可以在验证请求者访问配置数据之后发送配置数据。
在650处,硬件参考标识符可以与虚拟机标识符相关联。例如,第二请求(来自630)可以包括用于识别要下载的配置数据的虚拟机标识符。以这种方式,使用虚拟机映像标识符部署虚拟机可以在虚拟机被实例化时自动请求与硬件参考标识符相关联的配置数据。
图7是管理配置数据的示例方法700的流程图,该配置数据可用于在例如多租户环境中对可配置硬件进行配置或编程。例如,方法700可以由逻辑储存库服务实现,例如以上参考图1-3所描述的。
在710处,可以摄取可配置硬件的应用程序逻辑的第一规范。另外,可以摄取可配置硬件的主机逻辑的第二规范。第一和第二规范可用于生成可配置硬件的配置数据。例如,规范可以包括HDL或RTL源代码、网表和/或主机逻辑和应用程序逻辑的部分比特流。当规范包括源代码时,可以合成源代码以生成网表。可以对网表布局并布线以生成配置数据。配置数据可以以各种格式格式化,例如标识可配置硬件的各个组件的编程或设置的比特流。
在720处,配置数据可以存储在数据库中。例如,配置数据可以存储在逻辑储存库数据库中,例如逻辑储存库数据库150。配置数据可以与机器图像、用户、可配置硬件图像、产品代码或可用于检索信息数据的任何其他信息相关联地存储。配置数据可以与第一和第二规范相关联地存储,和/或与一套验证测试相关联地存储。配置数据可以与访问列表相关联地存储,使得配置数据可以由配置数据的开发者和/或最终用户访问。
在730处,可以收到配置数据的请求。例如,当在计算服务提供者提供的计算资源中部署新实例时,可以接收请求。作为另一示例,响应于请求在应用程序的执行期间下载配置数据的用户应用程序,可以接收请求。作为另一示例,响应于开发者或计算服务提供者更新、查看或测试配置数据,可以接收请求。
在740处,配置数据可以传送给请求者。例如,在验证请求者的访问权限之后,可以将配置数据发送给请求者。
在750处,可配置硬件可以根据配置数据进行配置。在配置完成后,可配置硬件可以包括主机逻辑设计和应用程序逻辑设计指定的功能。
图8描绘了其中可以实现所描述的创新的合适计算环境800的一般化示例。计算环境800不旨在对使用范围或功能提出任何限制,因为创新可以在不同的通用或专用计算系统中实现。例如,计算环境800可以是各种计算设备中的任何一种(例如,台式计算机、膝上型计算机、服务器计算机、平板计算机等)。
参考图8,计算环境800包括一个或多个处理单元810,815和存储器820,825。如图8所示,该基本配置830包括在虚线内。处理单元810,815执行计算机可执行指令。处理单元可以是通用中央处理单元(CPU)、专用集成电路(ASIC)中的处理器或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力。例如,图8示出了中央处理单元810以及图形处理单元或协处理单元815。有形存储器820,825可以是可由处理单元访问的易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)或两者的某种组合。存储器820,825以适于由处理单元执行的计算机可执行指令的形式存储实现本文描述的一个或多个创新的软件880。
计算系统可具有附加特征。例如,计算环境800包括存储设备840,一个或多个输入设备850、一个或多个输出设备860以及一个或多个通信连接870。互连机制(未示出),例如总线、控制器或网络互连计算环境800的组件。通常,操作系统软件(未示出)为在计算环境800中执行的其他软件提供操作环境,并协调计算环境800的组件的活动。
有形存储设备840可以是可移动的或不可移动的,并且包括磁盘、磁带或盒式磁带、CD-ROM、DVD或可用于以非暂时性方式存储信息并且可以在计算环境800内访问的任何其他介质。存储设备840存储用于实现本文描述的一个或多个创新的软件880的指令。
输入设备850可以是触摸输入设备,诸如键盘、鼠标、笔或轨迹球,语音输入设备,扫描设备,或向计算环境800提供输入的另一设备。输出设备860可以是显示器、打印机、扬声器、CD写入器或提供来自计算环境800的输出的另一设备。
通信连接870使得能够通过通信介质与另一计算实体进行通信。通信介质在已调制数据信号中传送诸如计算机可执行指令、音频或视频输入或输出之类的信息或其他数据。已调制数据信号是以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质可以使用电、光、RF或其他载体。
尽管为了便于呈现,以特定的顺序次序描述了一些所公开的方法的操作,但是应该理解,这种描述方式包括重新布置,除非下面阐述的特定语言需要特定的排序。例如,在某些情况下,顺序描述的操作可以重新排列或同时执行。此外,为了简单起见,附图可能未示出所公开的方法可以与其他方法结合使用的各种方式。
任何所公开的方法可以实现为存储在一种或多种计算机可读存储介质(例如,一个或多个光学介质盘、易失性存储器组件(诸如DRAM或SRAM)或非易失性存储器组件(诸如闪存或硬盘驱动程序))上并且在计算机(例如,任何商用计算机,包括智能电话或包括计算硬件的其他移动设备)上执行的计算机可执行指令。术语计算机可读存储介质不包括通信连接,例如信号和载波。用于实现所公开的技术的任何计算机可执行指令以及在所公开的实施例的实现期间创建和使用的任何数据可以存储在一种或多种计算机可读存储介质上。计算机可执行指令可以是例如专用软件应用程序或经由web浏览器或其他软件应用程序(诸如远程计算应用程序)访问或下载的软件应用程序的一部分。这样的软件可以例如使用一个或多个网络计算机在单个本地计算机(例如,任何合适的商用计算机)上或在网络环境中(例如,经由因特网、广域网、局域网、客户端-服务器网络(例如云计算网络)或其他此类网络)执行。
为清楚起见,仅描述了基于软件的实现方式的某些所选方面。省略了本领域公知的其他细节。例如,应该理解,所公开的技术不限于任何特定的计算机语言或程序。例如,所公开的技术可以通过用C++、Java、Perl、JavaScript、Adobe Flash或任何其他合适的编程语言编写的软件来实现。同样地,所公开的技术不限于任何特定计算机或硬件类型。合适的计算机和硬件的某些细节是众所周知的,并且不需要在本公开中详细阐述。
还应该很好地理解,本文描述的任何功能可以至少部分地由一个或多个硬件逻辑组件而不是软件来执行。例如但不限于,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统式系统(SOC)、复杂可编程逻辑器件(CPLD)等。
此外,可以通过合适的通信手段上载,下载或远程访问任何基于软件的实施例(包括,例如,用于使计算机执行任何所公开的方法的计算机可执行指令)。这种合适的通信手段包括,例如,因特网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信或其他此类通信手段。
可以鉴于以下条款来描述本公开的各种实施例:
1.一种提供可配置硬件的方法,该方法包括:
接收生成现场可编程门阵列(FPGA)的配置数据的第一请求,该第一请求包括对指定用于在FPGA上实现的应用程序逻辑的硬件设计的引用,当FPGA被配置时,FPGA包括主机逻辑和应用程序逻辑;
基于应用程序逻辑和主机逻辑生成经验证的比特流,经验证的比特流指定FPGA的配置数据;
接收第二请求以将经验证的比特流下载到计算环境的主机服务器计算机,该主机服务器计算机包括特定的FPGA;以及
响应于第二请求将经验证的比特流发送到主机服务器计算机,以便使用主机逻辑和应用程序逻辑配置特定的FPGA。
2.如条款1所述的方法,其中,所接收的硬件设计包括源代码,并且其中生成经验证的比特流包括合成所接收的硬件设计以生成与FPGA兼容的网表。
3.如前述任一条款所述的方法,其中,所接收的硬件设计包括网表,并且其中生成经验证的比特流包括路由所接收的硬件设计。
4.如前述任一条款所述的方法,其中,第一请求还包括FPGA的实例类型,并且基于实例类型、应用程序逻辑和主机逻辑生成经验证的比特流。
5.如前述任一条款所述的方法,其中,FPGA包括多个可配置区域,并且指定配置数据的经验证的比特流是用于配置区域的一部分的部分比特流。
6.如条款5所述的方法,其中,指定配置数据的经验证的比特流包括用于重新配置应用程序逻辑的数据和用于维护静态主机逻辑的数据。
7.如前述任一条款所述的方法,其中,第二请求至少部分地基于客户在计算环境的主机服务器计算机上启动实例的请求。
8.如前述任一条款所述的方法,还包括:
在计算环境的主机服务器计算机上启动虚拟机的实例;以及
使配置的FPGA可供虚拟机的实例使用。
9.计算机可读存储介质,包括在执行时使第一计算机系统执行以下操作的指令:
接收使用所述可配置硬件的应用程序逻辑规范生成可配置硬件的配置数据的第一请求;
生成所述可配置硬件的配置数据,所述配置数据包括用于实现应用程序逻辑的数据;
接收第二请求以将所述配置数据发送到包括所述可配置硬件的实例的主机服务器计算机;以及
响应于所述第二请求将所述配置数据发送到所述主机服务器计算机。
10.如条款9所述的计算机可读存储介质,其中所述应用程序逻辑规范包括源代码,并且其中生成所述可配置硬件的配置数据包括合成所述源代码以生成用于所述应用程序逻辑的网表。
11.如条款9或10所述的计算机可读存储介质,其中所述应用程序逻辑规范包括网表,并且其中生成所述可配置硬件的配置数据包括路由用于所述应用程序逻辑的网表。
12.如条款9-11中任一项所述的计算机可读存储介质,其中生成所述可配置硬件的配置数据包括将所述应用程序逻辑与所述可配置硬件的主机逻辑集成,所述主机逻辑被配置为约束所述应用程序逻辑的操作。
13.如条款12所述的计算机可读存储介质,其中生成所述可配置硬件的配置数据包括验证所述应用程序逻辑与主机逻辑要求兼容。
14.如条款9-13中任一项所述的计算机可读存储介质,其中生成所述可配置硬件的配置数据包括将硬件参考标识符分配给所述配置数据,并且其中所述第二请求包括所述硬件参考标识符。
15.如条款14所述的计算机可读存储介质,其中所述第二请求包括用于识别待下载的配置数据的硬件参考标识符。
16.如条款14或15所述的计算机可读存储介质,其中所述指令在执行时还使所述计算机系统:
将所述硬件参考标识符与虚拟机映像标识符相关联,并且其中所述第二请求包括用于识别待下载的配置数据的虚拟机映像标识符。
17.如条款9-16中任一项所述的计算机可读存储介质,其中所述第一请求包括对所述可配置硬件的应用程序逻辑规范的加密版本的引用。
18.如条款9-17中任一项所述的计算机可读存储介质,其中所述可配置硬件包括现场可编程门阵列(FPGA),并且所述配置数据包括用于配置FPGA的比特流。
19.如条款9-18中任一项所述的计算机可读存储介质,其中所述指令在执行时还使所述计算机系统:
导致与用于待生成的可配置硬件的配置数据相关联的定时报告;以及
将定时报告存储在第一请求指定的位置。
20.一种计算系统,包括:
数据库;以及
在耦合到数据库的第一服务器计算机上运行的逻辑储存库服务,所述逻辑储存库服务被配置为:
摄取可配置硬件的应用程序逻辑的第一规范和主机逻辑的第二规范,以生成所述可配置硬件的配置数据;
将所述配置数据存储在所述数据库中;
从第二服务器计算机接收所述配置数据的请求;以及
将所述配置数据发送到所述第二服务器计算机。
21.如条款20所述的计算系统,其中,摄取第一规范和第二规范包括合成和路由所述应用程序逻辑。
22.如条款20或21所述的计算系统,其中所述数据库包括可配置硬件的库,该可配置硬件库由可配置硬件图像标识符、虚拟机映像标识符或产品代码中的一个或多个索引。
所公开的方法、装置和系统不应被解释为以任何方式进行限制。相反,本公开内容针对各种公开的实施例的所有新颖和非显而易见的特征和方面,单独地并且以彼此的各种组合和子组合。所公开的方法、装置和系统不限于任何特定方面或特征或其组合,所公开的实施例也不要求存在任何一个或多个特定优点或解决问题。
鉴于可以应用所公开发明的原理的许多可能的实施例,应该认识到,所示实施例仅是本发明的优选示例,不应被视为限制本发明的范围。相反,本发明的范围由以下权利要求限定。因此,我们针对本发明声称所有这些都在这些权利要求的范围内。
Claims (15)
1.一种方法,包括:
接收使用可配置硬件的应用程序逻辑规范生成所述可配置硬件的配置数据的第一请求;
生成所述可配置硬件的配置数据,所述配置数据包括用于实现所述应用程序逻辑的数据;
接收第二请求以将所述配置数据发送到包括所述可配置硬件的实例的主机服务器计算机;以及
响应于所述第二请求将所述配置数据发送到所述主机服务器计算机。
2.一种计算机可读存储介质,包括在执行时使计算机系统执行以下操作的指令:
接收使用所述可配置硬件的应用程序逻辑规范生成可配置硬件的配置数据的第一请求;
生成所述可配置硬件的配置数据,所述配置数据包括用于实现应用程序逻辑的数据;
接收第二请求以将所述配置数据发送到包括所述可配置硬件的实例的主机服务器计算机;以及
响应于所述第二请求将所述配置数据发送到所述主机服务器计算机。
3.如权利要求2所述的计算机可读存储介质,其中所述应用程序逻辑规范包括源代码,并且其中生成所述可配置硬件的配置数据包括合成所述源代码以生成用于所述应用程序逻辑的网表。
4.如权利要求2或3所述的计算机可读存储介质,其中所述应用程序逻辑规范包括网表,并且其中生成所述可配置硬件的配置数据包括路由用于所述应用程序逻辑的网表。
5.如权利要求2-5中任一项所述的计算机可读存储介质,其中生成所述可配置硬件的配置数据包括将所述应用程序逻辑与所述可配置硬件的主机逻辑集成,所述主机逻辑被配置为约束所述应用程序逻辑的操作。
6.如权利要求5所述的计算机可读存储介质,其中生成所述可配置硬件的配置数据包括验证所述应用程序逻辑与主机逻辑要求兼容。
7.如权利要求2-6中任一项所述的计算机可读存储介质,其中生成所述可配置硬件的配置数据包括将硬件参考标识符分配给所述配置数据,并且其中所述第二请求包括所述硬件参考标识符。
8.如权利要求7所述的计算机可读存储介质,其中所述第二请求包括用于识别待下载的配置数据的硬件参考标识符。
9.如权利要求7或8所述的计算机可读存储介质,其中所述指令在执行时还使所述计算机系统:
将所述硬件参考标识符与虚拟机映像标识符相关联,并且其中所述第二请求包括用于识别待下载的配置数据的虚拟机映像标识符。
10.如权利要求2-9中任一项所述的计算机可读存储介质,其中所述第一请求包括对所述可配置硬件的应用程序逻辑规范的加密版本的引用。
11.如权利要求2-10中任一项所述的计算机可读存储介质,其中所述可配置硬件包括现场可编程门阵列(FPGA),并且所述配置数据包括用于配置FPGA的比特流。
12.如权利要求2-11中任一项所述的计算机可读存储介质,其中所述指令在执行时还使所述计算机系统:
导致与用于待生成的可配置硬件的配置数据相关联的定时报告。
13.一种计算系统,包括:
数据库;以及
在耦合到数据库的第一服务器计算机上运行的逻辑储存库服务,所述逻辑储存库服务被配置为:
摄取可配置硬件的应用程序逻辑的第一规范和主机逻辑的第二规范,以生成所述可配置硬件的配置数据;
将所述配置数据存储在所述数据库中;
从第二服务器计算机接收所述配置数据的请求;以及
将所述配置数据发送到所述第二服务器计算机。
14.如权利要求13所述的计算系统,其中,摄取第一规范和第二规范包括合成和路由所述应用程序逻辑。
15.如权利要求13或14所述的计算系统,其中所述数据库包括可配置硬件的库,该可配置硬件库由可配置硬件图像标识符、虚拟机映像标识符或产品代码中的一个或多个索引。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311691515.6A CN117950852A (zh) | 2016-09-29 | 2017-09-28 | 逻辑储存库服务 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/280,656 US10162921B2 (en) | 2016-09-29 | 2016-09-29 | Logic repository service |
US15/280,656 | 2016-09-29 | ||
PCT/US2017/054177 WO2018064417A1 (en) | 2016-09-29 | 2017-09-28 | Logic repository service |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311691515.6A Division CN117950852A (zh) | 2016-09-29 | 2017-09-28 | 逻辑储存库服务 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110088734A true CN110088734A (zh) | 2019-08-02 |
CN110088734B CN110088734B (zh) | 2023-12-29 |
Family
ID=60117772
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311691515.6A Pending CN117950852A (zh) | 2016-09-29 | 2017-09-28 | 逻辑储存库服务 |
CN201780060550.4A Active CN110088734B (zh) | 2016-09-29 | 2017-09-28 | 逻辑储存库服务 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311691515.6A Pending CN117950852A (zh) | 2016-09-29 | 2017-09-28 | 逻辑储存库服务 |
Country Status (5)
Country | Link |
---|---|
US (5) | US10162921B2 (zh) |
EP (1) | EP3519960B1 (zh) |
JP (1) | JP6841908B2 (zh) |
CN (2) | CN117950852A (zh) |
WO (1) | WO2018064417A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10338135B2 (en) | 2016-09-28 | 2019-07-02 | Amazon Technologies, Inc. | Extracting debug information from FPGAs in multi-tenant environments |
US11099894B2 (en) | 2016-09-28 | 2021-08-24 | Amazon Technologies, Inc. | Intermediate host integrated circuit between virtual machine instance and customer programmable logic |
US10795742B1 (en) | 2016-09-28 | 2020-10-06 | Amazon Technologies, Inc. | Isolating unresponsive customer logic from a bus |
US10223317B2 (en) * | 2016-09-28 | 2019-03-05 | Amazon Technologies, Inc. | Configurable logic platform |
US10250572B2 (en) | 2016-09-29 | 2019-04-02 | Amazon Technologies, Inc. | Logic repository service using encrypted configuration data |
US10162921B2 (en) * | 2016-09-29 | 2018-12-25 | Amazon Technologies, Inc. | Logic repository service |
US10282330B2 (en) | 2016-09-29 | 2019-05-07 | Amazon Technologies, Inc. | Configurable logic platform with multiple reconfigurable regions |
US10642492B2 (en) | 2016-09-30 | 2020-05-05 | Amazon Technologies, Inc. | Controlling access to previously-stored logic in a reconfigurable logic device |
US10423438B2 (en) | 2016-09-30 | 2019-09-24 | Amazon Technologies, Inc. | Virtual machines controlling separate subsets of programmable hardware |
US11115293B2 (en) | 2016-11-17 | 2021-09-07 | Amazon Technologies, Inc. | Networked programmable logic service provider |
US11042610B1 (en) * | 2017-10-04 | 2021-06-22 | Xilinx, Inc. | Enabling integrity and authenticity of design data |
CN111651290B (zh) * | 2019-03-04 | 2023-03-31 | 阿里巴巴集团控股有限公司 | 一种监控云平台上fpga的方法、装置及电子设备 |
CN112882966A (zh) * | 2020-03-24 | 2021-06-01 | 威盛电子股份有限公司 | 运算装置 |
CN113343507B (zh) * | 2021-07-07 | 2024-05-14 | 广州昇谷科技有限公司 | 一种面向水利勘测的Web服务组合发现方法 |
WO2024030157A1 (en) * | 2022-08-05 | 2024-02-08 | Banner Engineering Corp. | Tower light dynamic register population engine parsing unique field-generated performance string |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090157457A1 (en) * | 2006-06-05 | 2009-06-18 | Jarkko Huuhtanen | Provisioning and activation using a service catalog |
US8145894B1 (en) * | 2008-02-25 | 2012-03-27 | Drc Computer Corporation | Reconfiguration of an accelerator module having a programmable logic device |
US20130318240A1 (en) * | 2012-04-17 | 2013-11-28 | Stephen M. Hebert | Reconfigurable cloud computing |
US20140380025A1 (en) * | 2013-01-23 | 2014-12-25 | Empire Technology Development Llc | Management of hardware accelerator configurations in a processor chip |
US20160241438A1 (en) * | 2015-02-13 | 2016-08-18 | Amazon Technologies, Inc. | Configuration service for configuring instances |
Family Cites Families (163)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0978051A1 (en) * | 1996-06-21 | 2000-02-09 | Mirage Technologies, Inc. | Dynamically reconfigurable hardware system for real-time control of processes |
US6161211A (en) | 1996-10-28 | 2000-12-12 | Altera Corporation | Method and apparatus for automated circuit design |
US6011407A (en) * | 1997-06-13 | 2000-01-04 | Xilinx, Inc. | Field programmable gate array with dedicated computer bus interface and method for configuring both |
US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
US6034542A (en) | 1997-10-14 | 2000-03-07 | Xilinx, Inc. | Bus structure for modularized chip with FPGA modules |
JP3809727B2 (ja) * | 1998-06-17 | 2006-08-16 | 富士ゼロックス株式会社 | 情報処理システム、回路情報管理方法および回路情報記憶装置 |
US6658564B1 (en) | 1998-11-20 | 2003-12-02 | Altera Corporation | Reconfigurable programmable logic device computer system |
US6539438B1 (en) | 1999-01-15 | 2003-03-25 | Quickflex Inc. | Reconfigurable computing system and method and apparatus employing same |
US7678048B1 (en) | 1999-09-14 | 2010-03-16 | Siemens Medical Solutions Usa, Inc. | Medical diagnostic ultrasound system and method |
US6595921B1 (en) | 1999-09-14 | 2003-07-22 | Acuson Corporation | Medical diagnostic ultrasound imaging system and method for constructing a composite ultrasound image |
US6678646B1 (en) | 1999-12-14 | 2004-01-13 | Atmel Corporation | Method for implementing a physical design for a dynamically reconfigurable logic circuit |
US7240218B2 (en) * | 2000-02-08 | 2007-07-03 | Algotronix, Ltd. | Method of using a mask programmed key to securely configure a field programmable gate array |
US6438737B1 (en) | 2000-02-15 | 2002-08-20 | Intel Corporation | Reconfigurable logic for a computer |
US6785816B1 (en) | 2000-05-01 | 2004-08-31 | Nokia Corporation | System and method for secured configuration data for programmable logic devices |
US6826717B1 (en) | 2000-06-12 | 2004-11-30 | Altera Corporation | Synchronization of hardware and software debuggers |
WO2002001425A2 (en) | 2000-06-23 | 2002-01-03 | Xilinx, Inc. | Method for remotely utilizing configurable hardware |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US6802026B1 (en) | 2001-05-15 | 2004-10-05 | Xilinx, Inc. | Parameterizable and reconfigurable debugger core generators |
JP2002366597A (ja) * | 2001-06-07 | 2002-12-20 | Pfu Ltd | Fpga設計システムおよびfpga設計プログラム |
GB0114317D0 (en) | 2001-06-13 | 2001-08-01 | Kean Thomas A | Method of protecting intellectual property cores on field programmable gate array |
US6476634B1 (en) | 2002-02-01 | 2002-11-05 | Xilinx, Inc. | ALU implementation in single PLD logic cell |
US6693452B1 (en) | 2002-02-25 | 2004-02-17 | Xilinx, Inc. | Floor planning for programmable gate array having embedded fixed logic circuitry |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
GB0304628D0 (en) | 2003-02-28 | 2003-04-02 | Imec Inter Uni Micro Electr | Method for hardware-software multitasking on a reconfigurable computing platform |
US6938488B2 (en) | 2002-08-21 | 2005-09-06 | Battelle Memorial Institute | Acoustic inspection device |
US7117481B1 (en) | 2002-11-06 | 2006-10-03 | Vmware, Inc. | Composite lock for computer systems with multiple domains |
US6907595B2 (en) | 2002-12-13 | 2005-06-14 | Xilinx, Inc. | Partial reconfiguration of a programmable logic device using an on-chip processor |
US7313794B1 (en) | 2003-01-30 | 2007-12-25 | Xilinx, Inc. | Method and apparatus for synchronization of shared memory in a multiprocessor system |
WO2004075056A1 (ja) | 2003-02-21 | 2004-09-02 | National Institute Of Advanced Industrial Science And Technology | ウイルスチェック装置及びシステム |
US7177961B2 (en) | 2003-05-12 | 2007-02-13 | International Business Machines Corporation | Managing access, by operating system images of a computing environment, of input/output resources of the computing environment |
US7505891B2 (en) * | 2003-05-20 | 2009-03-17 | Verisity Design, Inc. | Multi-user server system and method |
JP2005107911A (ja) | 2003-09-30 | 2005-04-21 | Daihen Corp | 書込情報生成用プログラム、ハードウェアへの情報書込用プログラム、これらのプログラムを記録したコンピュータ読み取り可能な記録媒体、書込情報生成装置及び情報書込装置 |
US7552426B2 (en) | 2003-10-14 | 2009-06-23 | Microsoft Corporation | Systems and methods for using synthetic instructions in a virtual machine |
US20050198235A1 (en) | 2004-01-29 | 2005-09-08 | Arvind Kumar | Server configuration and management |
US7243221B1 (en) | 2004-02-26 | 2007-07-10 | Xilinx, Inc. | Method and apparatus for controlling a processor in a data processing system |
US7281082B1 (en) | 2004-03-26 | 2007-10-09 | Xilinx, Inc. | Flexible scheme for configuring programmable semiconductor devices using or loading programs from SPI-based serial flash memories that support multiple SPI flash vendors and device families |
US20050223227A1 (en) | 2004-03-31 | 2005-10-06 | Deleeuw William C | Addressable authentication in a scalable, reconfigurable communication architecture |
US7721036B2 (en) | 2004-06-01 | 2010-05-18 | Quickturn Design Systems Inc. | System and method for providing flexible signal routing and timing |
US7987373B2 (en) * | 2004-09-30 | 2011-07-26 | Synopsys, Inc. | Apparatus and method for licensing programmable hardware sub-designs using a host-identifier |
US8621597B1 (en) | 2004-10-22 | 2013-12-31 | Xilinx, Inc. | Apparatus and method for automatic self-erasing of programmable logic devices |
US8458467B2 (en) | 2005-06-21 | 2013-06-04 | Cisco Technology, Inc. | Method and apparatus for adaptive application message payload content transformation in a network infrastructure element |
US7404023B1 (en) | 2005-01-14 | 2008-07-22 | Xilinx, Inc. | Method and apparatus for providing channel bonding and clock correction arbitration |
US7886126B2 (en) | 2005-01-14 | 2011-02-08 | Intel Corporation | Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system |
US7716497B1 (en) | 2005-06-14 | 2010-05-11 | Xilinx, Inc. | Bitstream protection without key storage |
US7451426B2 (en) | 2005-07-07 | 2008-11-11 | Lsi Corporation | Application specific configurable logic IP |
US7581117B1 (en) | 2005-07-19 | 2009-08-25 | Actel Corporation | Method for secure delivery of configuration data for a programmable logic device |
US7706417B1 (en) | 2005-10-25 | 2010-04-27 | Xilinx, Inc. | Method of and circuit for generating a plurality of data streams |
US8645712B1 (en) | 2005-10-27 | 2014-02-04 | Altera Corporation | Electronic circuit design copy protection |
US7739092B1 (en) | 2006-01-31 | 2010-06-15 | Xilinx, Inc. | Fast hardware co-simulation reset using partial bitstreams |
JP2007243671A (ja) | 2006-03-09 | 2007-09-20 | Kddi Corp | 論理プログラマブルデバイス保護回路 |
US7715433B2 (en) | 2006-07-14 | 2010-05-11 | Boren Gary W | Universal controller and signal monitor |
US7856545B2 (en) * | 2006-07-28 | 2010-12-21 | Drc Computer Corporation | FPGA co-processor for accelerated computation |
US7809936B2 (en) | 2006-08-02 | 2010-10-05 | Freescale Semiconductor, Inc. | Method and apparatus for reconfiguring a remote device |
US7734859B2 (en) | 2007-04-20 | 2010-06-08 | Nuon, Inc | Virtualization of a host computer's native I/O system architecture via the internet and LANs |
US7564727B1 (en) | 2007-06-25 | 2009-07-21 | Xilinx, Inc. | Apparatus and method for configurable power management |
US8176487B2 (en) | 2007-08-02 | 2012-05-08 | International Business Machines Corporation | Client partition scheduling and prioritization of service partition work |
US7902866B1 (en) | 2007-08-27 | 2011-03-08 | Virginia Tech Intellectual Properties, Inc. | Wires on demand: run-time communication synthesis for reconfigurable computing |
US7904629B2 (en) | 2007-10-02 | 2011-03-08 | NVON, Inc. | Virtualized bus device |
JP4593614B2 (ja) | 2007-12-27 | 2010-12-08 | 富士通株式会社 | 画像データ検証方法及び画像データ検証システム |
JP5246863B2 (ja) | 2008-11-14 | 2013-07-24 | 独立行政法人産業技術総合研究所 | 再構成可能論理デバイスの論理プログラムデータ保護システム及び保護方法 |
US9064058B2 (en) | 2008-12-24 | 2015-06-23 | Nuon, Inc. | Virtualized PCI endpoint for extended systems |
US20100174865A1 (en) | 2009-01-06 | 2010-07-08 | International Business Machines Corporation | Dynamic data security erasure |
US8776090B2 (en) | 2009-02-17 | 2014-07-08 | Broadcom Corporation | Method and system for network abstraction and virtualization for a single operating system (OS) |
JP5495336B2 (ja) | 2009-03-03 | 2014-05-21 | 日本電気株式会社 | 遅延ライブラリ生成装置、遅延ライブラリ生成装置の制御方法、コンピュータプログラム、及び記録媒体 |
JP5360194B2 (ja) | 2009-03-18 | 2013-12-04 | 日本電気株式会社 | 再構成可能な論理回路 |
US8560758B2 (en) | 2009-08-24 | 2013-10-15 | Red Hat Israel, Ltd. | Mechanism for out-of-synch virtual machine memory management optimization |
US8626970B2 (en) | 2010-06-23 | 2014-01-07 | International Business Machines Corporation | Controlling access by a configuration to an adapter function |
US8516272B2 (en) | 2010-06-30 | 2013-08-20 | International Business Machines Corporation | Secure dynamically reconfigurable logic |
US8516268B2 (en) | 2010-08-23 | 2013-08-20 | Raytheon Company | Secure field-programmable gate array (FPGA) architecture |
JP5646764B2 (ja) | 2010-10-22 | 2014-12-24 | サムスン ヘビー インダストリーズ カンパニー リミテッド | 動作中に再構成可能な制御システム及びその方法 |
US8561065B2 (en) | 2010-11-15 | 2013-10-15 | International Business Machines Corporation | Virtualization of vendor specific network interfaces of self-virtualizing input/output device virtual functions |
US8881141B2 (en) | 2010-12-08 | 2014-11-04 | Intenational Business Machines Corporation | Virtualization of hardware queues in self-virtualizing input/output devices |
CN102736945B (zh) | 2011-03-31 | 2016-05-18 | 国际商业机器公司 | 一种运行应用程序的多个实例的方法和系统 |
US9218195B2 (en) | 2011-05-17 | 2015-12-22 | International Business Machines Corporation | Vendor-independent resource configuration interface for self-virtualizing input/output device |
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
JP5653865B2 (ja) | 2011-08-23 | 2015-01-14 | 日本電信電話株式会社 | データ処理システム |
JP6154378B2 (ja) | 2011-08-31 | 2017-06-28 | トムソン ライセンシングThomson Licensing | エンド・ユーザ装置の構成データの安全なバックアップと復元のための方法、および、その方法を利用する装置 |
US8726337B1 (en) | 2011-09-30 | 2014-05-13 | Emc Corporation | Computing with presentation layer for multiple virtual machines |
CN103959245B (zh) | 2011-12-02 | 2016-08-24 | 英派尔科技开发有限公司 | 作为服务的集成电路 |
US9448846B2 (en) | 2011-12-13 | 2016-09-20 | International Business Machines Corporation | Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US9465632B2 (en) | 2012-02-04 | 2016-10-11 | Global Supercomputing Corporation | Parallel hardware hypervisor for virtualizing application-specific supercomputers |
US9619292B2 (en) | 2012-04-30 | 2017-04-11 | Alcatel Lucent | Resource placement in networked cloud based on resource constraints |
US9009703B2 (en) | 2012-05-10 | 2015-04-14 | International Business Machines Corporation | Sharing reconfigurable computing devices between workloads |
US9104453B2 (en) | 2012-06-21 | 2015-08-11 | International Business Machines Corporation | Determining placement fitness for partitions under a hypervisor |
CN103577266B (zh) | 2012-07-31 | 2017-06-23 | 国际商业机器公司 | 用于对现场可编程门阵列资源进行分配的方法及系统 |
US8799992B2 (en) | 2012-10-24 | 2014-08-05 | Watchguard Technologies, Inc. | Systems and methods for the rapid deployment of network security devices |
WO2014120157A1 (en) | 2013-01-30 | 2014-08-07 | Empire Technology Development Llc | Dynamic reconfiguration of programmable hardware |
US9766910B1 (en) | 2013-03-07 | 2017-09-19 | Amazon Technologies, Inc. | Providing field-programmable devices in a distributed execution environment |
JP2014178784A (ja) | 2013-03-13 | 2014-09-25 | Ricoh Co Ltd | 情報処理装置、情報処理システム及び情報処理プログラム |
US8928351B1 (en) | 2013-03-13 | 2015-01-06 | Xilinx, Inc. | Emulating power domains in an integrated circuit using partial reconfiguration |
US9396012B2 (en) | 2013-03-14 | 2016-07-19 | Qualcomm Incorporated | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
US8745561B1 (en) * | 2013-03-15 | 2014-06-03 | Cadence Design Systems, Inc. | System and method for common path pessimism reduction in timing analysis to guide remedial transformations of a circuit design |
US9747185B2 (en) | 2013-03-26 | 2017-08-29 | Empire Technology Development Llc | Acceleration benefit estimator |
JP6102511B2 (ja) | 2013-05-23 | 2017-03-29 | 富士通株式会社 | 集積回路、制御装置、制御方法、および制御プログラム |
WO2014189529A1 (en) | 2013-05-24 | 2014-11-27 | Empire Technology Development, Llc | Datacenter application packages with hardware accelerators |
US9672167B2 (en) | 2013-07-22 | 2017-06-06 | Futurewei Technologies, Inc. | Resource management for peripheral component interconnect-express domains |
US9870268B2 (en) | 2013-08-05 | 2018-01-16 | Amazon Technologies, Inc. | Virtual computing instance migration |
US8910109B1 (en) | 2013-08-12 | 2014-12-09 | Altera Corporation | System level tools to support FPGA partial reconfiguration |
US10140639B2 (en) * | 2013-08-23 | 2018-11-27 | Empire Technology Development Llc | Datacenter-based hardware accelerator integration |
WO2015030731A1 (en) | 2013-08-27 | 2015-03-05 | Empire Technology Development Llc | Speculative allocation of instances |
US9098662B1 (en) | 2013-08-28 | 2015-08-04 | Altera Corporation | Configuring a device to debug systems in real-time |
US10037222B2 (en) | 2013-09-24 | 2018-07-31 | University Of Ottawa | Virtualization of hardware accelerator allowing simultaneous reading and writing |
CN105706053A (zh) | 2013-11-06 | 2016-06-22 | 英派尔科技开发有限公司 | 通过在数据中心处的协处理器的制图进行恶意攻击防止 |
US10461937B1 (en) | 2013-12-18 | 2019-10-29 | Amazon Technologies, Inc. | Hypervisor supported secrets compartment |
US9841993B2 (en) | 2013-12-27 | 2017-12-12 | Hitachi, Ltd. | Realtime hypervisor with priority interrupt support |
US9904749B2 (en) | 2014-02-13 | 2018-02-27 | Synopsys, Inc. | Configurable FPGA sockets |
US9483639B2 (en) | 2014-03-13 | 2016-11-01 | Unisys Corporation | Service partition virtualization system and method having a secure application |
US9298865B1 (en) | 2014-03-20 | 2016-03-29 | Altera Corporation | Debugging an optimized design implemented in a device with a pre-optimized design simulation |
US9851998B2 (en) | 2014-07-30 | 2017-12-26 | Microsoft Technology Licensing, Llc | Hypervisor-hosted virtual machine forensics |
US10230591B2 (en) | 2014-09-30 | 2019-03-12 | Microsoft Technology Licensing, Llc | Network resource governance in multi-tenant datacenters |
US9672935B2 (en) | 2014-10-17 | 2017-06-06 | Lattice Semiconductor Corporation | Memory circuit having non-volatile memory cell and methods of using |
US9372956B1 (en) | 2014-11-10 | 2016-06-21 | Xilinx, Inc. | Increased usable programmable device dice |
US10394731B2 (en) | 2014-12-19 | 2019-08-27 | Amazon Technologies, Inc. | System on a chip comprising reconfigurable resources for multiple compute sub-systems |
US9703703B2 (en) | 2014-12-23 | 2017-07-11 | Intel Corporation | Control of entry into protected memory views |
WO2016118978A1 (en) | 2015-01-25 | 2016-07-28 | Objective Interface Systems, Inc. | A multi-session zero client device and network for transporting separated flows to device sessions via virtual nodes |
CN104699508B (zh) | 2015-03-25 | 2017-08-22 | 南京大学 | 云计算平台中快速部署和更新虚拟环境系统及其方法 |
US9762392B2 (en) | 2015-03-26 | 2017-09-12 | Eurotech S.P.A. | System and method for trusted provisioning and authentication for networked devices in cloud-based IoT/M2M platforms |
US10574734B2 (en) * | 2015-04-09 | 2020-02-25 | Rambus Inc. | Dynamic data and compute management |
US10027543B2 (en) * | 2015-04-17 | 2018-07-17 | Microsoft Technology Licensing, Llc | Reconfiguring an acceleration component among interconnected acceleration components |
US9983938B2 (en) * | 2015-04-17 | 2018-05-29 | Microsoft Technology Licensing, Llc | Locally restoring functionality at acceleration components |
EP3089035A1 (en) | 2015-04-30 | 2016-11-02 | Virtual Open Systems | Virtualization manager for reconfigurable hardware accelerators |
US20160323143A1 (en) | 2015-05-02 | 2016-11-03 | Hyeung-Yun Kim | Method and apparatus for neuroplastic internet of things by cloud computing infrastructure as a service incorporating reconfigurable hardware |
US9678681B2 (en) | 2015-06-17 | 2017-06-13 | International Business Machines Corporation | Secured multi-tenancy data in cloud-based storage environments |
US9684743B2 (en) | 2015-06-19 | 2017-06-20 | Synopsys, Inc. | Isolated debugging in an FPGA based emulation environment |
US10387209B2 (en) | 2015-09-28 | 2019-08-20 | International Business Machines Corporation | Dynamic transparent provisioning of resources for application specific resources |
US10013212B2 (en) | 2015-11-30 | 2018-07-03 | Samsung Electronics Co., Ltd. | System architecture with memory channel DRAM FPGA module |
US9590635B1 (en) * | 2015-12-03 | 2017-03-07 | Altera Corporation | Partial reconfiguration of programmable devices |
US20170187831A1 (en) | 2015-12-29 | 2017-06-29 | Itron, Inc. | Universal Abstraction Layer and Management of Resource Devices |
US10069681B2 (en) | 2015-12-31 | 2018-09-04 | Amazon Technologies, Inc. | FPGA-enabled compute instances |
US9940483B2 (en) | 2016-01-25 | 2018-04-10 | Raytheon Company | Firmware security interface for field programmable gate arrays |
JP6620595B2 (ja) | 2016-02-25 | 2019-12-18 | 富士通株式会社 | 情報処理システム、情報処理装置、管理装置、処理プログラム、及び処理方法 |
US10778558B2 (en) | 2016-03-09 | 2020-09-15 | Intel Corporation | Methods and apparatus to improve computing resource utilization |
US10169065B1 (en) | 2016-06-29 | 2019-01-01 | Altera Corporation | Live migration of hardware accelerated applications |
US10833969B2 (en) | 2016-07-22 | 2020-11-10 | Intel Corporation | Methods and apparatus for composite node malleability for disaggregated architectures |
US10402566B2 (en) | 2016-08-01 | 2019-09-03 | The Aerospace Corporation | High assurance configuration security processor (HACSP) for computing devices |
US10511589B2 (en) | 2016-09-14 | 2019-12-17 | Oracle International Corporation | Single logout functionality for a multi-tenant identity and data security management cloud service |
US10846390B2 (en) | 2016-09-14 | 2020-11-24 | Oracle International Corporation | Single sign-on functionality for a multi-tenant identity and data security management cloud service |
US10528765B2 (en) * | 2016-09-16 | 2020-01-07 | Intel Corporation | Technologies for secure boot provisioning and management of field-programmable gate array images |
US11099894B2 (en) | 2016-09-28 | 2021-08-24 | Amazon Technologies, Inc. | Intermediate host integrated circuit between virtual machine instance and customer programmable logic |
US10338135B2 (en) | 2016-09-28 | 2019-07-02 | Amazon Technologies, Inc. | Extracting debug information from FPGAs in multi-tenant environments |
US10223317B2 (en) | 2016-09-28 | 2019-03-05 | Amazon Technologies, Inc. | Configurable logic platform |
US10282330B2 (en) | 2016-09-29 | 2019-05-07 | Amazon Technologies, Inc. | Configurable logic platform with multiple reconfigurable regions |
US10250572B2 (en) | 2016-09-29 | 2019-04-02 | Amazon Technologies, Inc. | Logic repository service using encrypted configuration data |
US10162921B2 (en) * | 2016-09-29 | 2018-12-25 | Amazon Technologies, Inc. | Logic repository service |
US10642492B2 (en) | 2016-09-30 | 2020-05-05 | Amazon Technologies, Inc. | Controlling access to previously-stored logic in a reconfigurable logic device |
US10423438B2 (en) | 2016-09-30 | 2019-09-24 | Amazon Technologies, Inc. | Virtual machines controlling separate subsets of programmable hardware |
US11115293B2 (en) | 2016-11-17 | 2021-09-07 | Amazon Technologies, Inc. | Networked programmable logic service provider |
US10691803B2 (en) | 2016-12-13 | 2020-06-23 | Amazon Technologies, Inc. | Secure execution environment on a server |
US11023258B2 (en) | 2016-12-30 | 2021-06-01 | Intel Corporation | Self-morphing server platforms |
US10540506B2 (en) * | 2017-01-12 | 2020-01-21 | Microsoft Technology Licensing, Llc | Field-programmable gate array virtualization |
US10764129B2 (en) * | 2017-04-18 | 2020-09-01 | Amazon Technologies, Inc. | Logic repository service supporting adaptable host logic |
US10747565B2 (en) | 2017-04-18 | 2020-08-18 | Amazon Technologies, Inc. | Virtualization of control and status signals |
DE112017007643T5 (de) | 2017-06-16 | 2020-05-20 | Intel Corporation | Bitstromschlüssel-Authentifizierung umkonfigurierbarer Vorrichtungen |
US10469272B2 (en) * | 2017-07-28 | 2019-11-05 | Netapp, Inc. | Methods for facilitating secure cloud compute environments and devices thereof |
US10902132B2 (en) | 2017-08-25 | 2021-01-26 | Graf Research Corporation | Private verification for FPGA bitstreams |
US10223014B1 (en) | 2017-09-28 | 2019-03-05 | Intel Corporation | Maintaining reconfigurable partitions in a programmable device |
WO2019083991A1 (en) | 2017-10-23 | 2019-05-02 | Yuan Zhichao | SYSTEMS AND METHODS FOR DATA ENCRYPTION AND DECREASING BASED ON PROGRAMMABLE MATERIAL |
US20200167506A1 (en) | 2019-09-27 | 2020-05-28 | Intel Corporation | Security Architecture for Partial Reconfiguration of a Configurable Integrated Circuit Die |
US11895201B2 (en) | 2020-03-27 | 2024-02-06 | Intel Corporation | Programmable integrated circuit configured as a remote trust anchor to support multitenancy |
US11328111B2 (en) | 2020-09-25 | 2022-05-10 | Intel Corporation | Broadcast remote sealing for scalable trusted execution environment provisioning |
US20210117246A1 (en) | 2020-09-25 | 2021-04-22 | Intel Corporation | Disaggregated computing for distributed confidential computing environment |
CN116541073A (zh) * | 2022-01-25 | 2023-08-04 | 香港理工大学 | 基于多镜像fpga的加速器、加速器实现方法、终端设备及计算机可读存储介质 |
-
2016
- 2016-09-29 US US15/280,656 patent/US10162921B2/en active Active
-
2017
- 2017-09-28 CN CN202311691515.6A patent/CN117950852A/zh active Pending
- 2017-09-28 CN CN201780060550.4A patent/CN110088734B/zh active Active
- 2017-09-28 WO PCT/US2017/054177 patent/WO2018064417A1/en unknown
- 2017-09-28 JP JP2019516939A patent/JP6841908B2/ja active Active
- 2017-09-28 EP EP17784752.2A patent/EP3519960B1/en active Active
-
2018
- 2018-11-20 US US16/196,992 patent/US10740518B2/en active Active
-
2020
- 2020-07-20 US US16/933,610 patent/US11074380B2/en active Active
-
2021
- 2021-07-01 US US17/365,599 patent/US11704459B2/en active Active
-
2023
- 2023-05-31 US US18/203,799 patent/US20230315957A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090157457A1 (en) * | 2006-06-05 | 2009-06-18 | Jarkko Huuhtanen | Provisioning and activation using a service catalog |
US8145894B1 (en) * | 2008-02-25 | 2012-03-27 | Drc Computer Corporation | Reconfiguration of an accelerator module having a programmable logic device |
US20130318240A1 (en) * | 2012-04-17 | 2013-11-28 | Stephen M. Hebert | Reconfigurable cloud computing |
US20140380025A1 (en) * | 2013-01-23 | 2014-12-25 | Empire Technology Development Llc | Management of hardware accelerator configurations in a processor chip |
US20160241438A1 (en) * | 2015-02-13 | 2016-08-18 | Amazon Technologies, Inc. | Configuration service for configuring instances |
Also Published As
Publication number | Publication date |
---|---|
EP3519960B1 (en) | 2022-09-14 |
US10162921B2 (en) | 2018-12-25 |
US20180089343A1 (en) | 2018-03-29 |
EP3519960A1 (en) | 2019-08-07 |
US20230315957A1 (en) | 2023-10-05 |
US11704459B2 (en) | 2023-07-18 |
WO2018064417A1 (en) | 2018-04-05 |
US11074380B2 (en) | 2021-07-27 |
US20210326503A1 (en) | 2021-10-21 |
US20200349310A1 (en) | 2020-11-05 |
JP6841908B2 (ja) | 2021-03-10 |
CN110088734B (zh) | 2023-12-29 |
US10740518B2 (en) | 2020-08-11 |
US20190108295A1 (en) | 2019-04-11 |
JP2019537099A (ja) | 2019-12-19 |
CN117950852A (zh) | 2024-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110088734A (zh) | 逻辑储存库服务 | |
CN109791518A (zh) | 从多租户环境中的fpga提取调试信息 | |
US11863406B2 (en) | Networked programmable logic service provider | |
CN110088741A (zh) | 控制在可重新配置逻辑设备中访问先前存储的逻辑 | |
CN110088742A (zh) | 使用加密配置数据的逻辑储存库服务 | |
CN109791508A (zh) | 具有多个可重配置区域的可配置逻辑平台 | |
CN110998555B (zh) | 支持可适应性主机逻辑的逻辑仓储服务 | |
CN109791536A (zh) | 可配置逻辑平台 | |
CN110383246A (zh) | 虚拟机控制可编程硬件的单独子集 | |
CN110520847A (zh) | 控制和状态信号的虚拟化 | |
CN113312306B (zh) | 可配置逻辑平台 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |