CN110088741A - 控制在可重新配置逻辑设备中访问先前存储的逻辑 - Google Patents

控制在可重新配置逻辑设备中访问先前存储的逻辑 Download PDF

Info

Publication number
CN110088741A
CN110088741A CN201780060298.7A CN201780060298A CN110088741A CN 110088741 A CN110088741 A CN 110088741A CN 201780060298 A CN201780060298 A CN 201780060298A CN 110088741 A CN110088741 A CN 110088741A
Authority
CN
China
Prior art keywords
logic
subregion
memory
identified
reconfigurable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201780060298.7A
Other languages
English (en)
Inventor
M·B·戴维斯
E·伊森伯格
R·M·约翰逊
A·克汉
I·M·H·A·M·阿塔
N·柏莎拉
C·J·佩蒂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN110088741A publication Critical patent/CN110088741A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

公开了用于在多租户服务器环境中安全地擦除诸如FPGA的可重新配置逻辑设备的分区的方法和装置。在一个示例中,安全地擦除FPGA的方法包括识别FPGA中先前编程的资源的一个分区,通过将新值存储在所识别的分区的存储器或存储元件中来擦除所识别的分区,并将新值存储在电连接到集成电路并与识别的分区相关联的附加外部资源的存储器或存储元件中。因此,防止其他分区和所识别的分区的后续用户访问安全擦除的数据。可由主计算机通过DMA访问的配置电路可被编程到FPGA可重新配置逻辑中,以执行所公开的擦除操作。

Description

控制在可重新配置逻辑设备中访问先前存储的逻辑
背景技术
云计算是使用在远程位置可用并且可通过诸如因特网的网络访问的计算资源(硬件和软件)。在一些布置中,用户能够根据需求服务购买这些计算资源(包括存储和计算能力)作为实用程序。云计算将用户的数据、软件和计算交托给远程服务。虚拟计算资源的使用可以提供许多优点,包括成本优势和/或快速适应变化的计算资源需求的能力。
可以通过使用协处理器来加速一些计算,包括利用可重新配置逻辑实现的加速器(例如,在现场可编程门阵列(FPGA)中。FPGA开发者通常将具有专用接口的本地主计算机连接到支持JTAG接口的本地FPGA的外部引脚,以加速映射到FPGA的功能。因此,在云计算环境中使用这种加速器,通常缺乏FPGA专用硬件和安全功能,提供了充分的改进机会。
附图说明
图1是示出如可以在所公开技术的某些示例中实现的系统的示例的系统图,该系统包括用于管理配置数据和编程可重新配置逻辑设备的逻辑储存库服务。
图2是示出逻辑储存库服务的示例架构的系统图。
图3是概述如可以在所公开的技术的某些示例中实现的包括可在重新编程之前清除的应用程序逻辑的系统的示例配置的框图。
图4示出了可以由逻辑储存库服务执行的配置数据的摄取和生成的示例。
图5示出了图4的示例系统的进一步细节,该系统包括用于配置和接口到可配置硬件平台的控制平面和数据平面的组件。
图6是概述在虚拟化可重新配置逻辑设备中清理数据的示例方法的流程图。
图7是概述在虚拟化可重新配置逻辑设备中清理数据的示例方法的流程图。
图8是示出在包括逻辑储存库服务的多租户环境中运行的多个虚拟机实例的示例系统图。
图9描绘了其中可以实现某些所描述的创新的合适计算环境的一般化示例。
发明详述
用于在一组可重复使用的通用计算资源内提供专用计算资源的一种解决方案是提供包括可配置逻辑平台的服务器计算机(诸如通过向服务器计算机提供包括可重新配置逻辑设备的附加卡,例如现场可编程门阵列(FPGA))作为通用计算资源的选择。可配置逻辑是可以编程或配置为执行由配置数据的应用指定的逻辑功能的硬件。例如,计算资源的用户可以提供规范(例如,以硬件描述语言(例如,Verilog、SystemVerilog和/或VHDL)或其他语言(例如,C、C++和/或SystemC)编写,在使用原理图捕获应用程序生成的网表中,或在由脚本生成的网表中),用于配置可配置逻辑。可配置逻辑可以根据规范进行配置,配置的逻辑可以用于为用户执行任务。然而,允许用户访问计算设施的低级硬件可能潜在地在计算设施内引入安全性和隐私问题。例如,由于可重新配置逻辑设备和相关组件(例如,耦合到可重新配置逻辑设备的存储器和其他电路)通常将被云环境中的许多用户使用,因此存储在设备和相关组件中的数据对于计算设施内资源的后续用户不应该是可读的。
在允许用户访问低级硬件(包括虚拟化可重新配置逻辑设备中的可重新配置硬件)中出现的问题包括相同可重新配置逻辑设备资源的后续用户可以通过检查可重新配置逻辑设备内的存储器和存储元件的状态以及诸如可重新配置逻辑器件可访问的存储器的附加资源来获得对敏感用户数据的访问权的可能性。所公开的技术包括用于隔离,清除和/或清理存储在可重新配置逻辑设备中的数据和相关联的附加资源的技术。
如本文所使用的,术语“隔离”是指配置可重新配置逻辑设备的一部分,以便在逻辑上将分区与可重新配置逻辑设备内的其他电路分离。因此,隔离使得隔离的分区对于可重新配置逻辑设备内的其他分区(例如,其他用户主机进程)不可访问,以及使得隔离的分区不会受到可重新配置逻辑设备外部的其他设备(例如,计算主机上的其他用户进程)的未授权访问。例如,通过重新编程将分区连接到设备内其他分区的逻辑,通过重新编程互连,通过置位或取消置位控制接口电路(例如三态门、传输门和/或多路复用器)的控制信号,可以隔离设备。在一些示例中,隔离配置操作允许在设备内的其他分区中操作的逻辑在隔离,清除和清理所选分区时继续操作。
如本文所使用的,“清除”是指通过使用由可重新配置逻辑设备的硬件资源提供的复位功能来复位存储在存储器和/或存储元件中的值。清除的示例是将配置比特流应用于FPGA的配置端口,其中配置比特流使得FGPA被配置为复位或其他已知状态,其阻止对存储器和/或存储元件中的先前存储的数据的访问。在一些示例中,配置比特流用于重新配置设备中的可重新配置逻辑的局部部分,而在其他示例中,配置比特流用于重新配置所有可重新配置逻辑。在一些示例中,FPGA包括可以通过在FPGA的I/O上置位信号来应用的复位功能。在一些示例中,可以通过将专用比特流应用于可重新配置逻辑设备并执行局部重新配置来执行清除可重新配置逻辑设备的动作。通过执行局部重新配置,可重新配置逻辑设备的逻辑和其他用户分区以及任何管理程序或主机分区可以维持其编程和状态。因此,多个用户可以同时占用可重新配置逻辑设备的不同部分,并且这些相同用户可以在他们完成使用分区之后清除和清理它们的分区。在一些示例中,当清除所选分区中的逻辑时,在其他分区中操作的逻辑及其相关联的存储器设备可以继续正常操作。
如本文所使用的,术语“清理”是指利用电路执行一系列操作以清理存储在电路的存储器或存储单元中的值。如相关领域的普通技术人员将容易理解的,可以通过例如写入诸如全零、全1或全部已知模式(例如,0xdeadbeef)的已知值集合,或者通过存储随机值来替换电路中先前存储的值来从存储器或存储元件中清理数据。在一些示例中,清理可重新配置逻辑设备的分区的动作可以通过操作配置在可重新配置逻辑设备内的专用逻辑并执行局部重新配置来执行。例如,诸如锁存器和触发器之类的存储设备的备选输入(例如,数据输入、置位/清除/复位、扫描或其他合适的输入)可以从清理器电路接收已知值以复位存储的值。在一些示例中,存储器可以提供执行该功能的复位或置位引脚,清理器电路可以迭代以通过存储器的多个地址执行多次写入,或者一组有效位可以与存储器输出上的多路复用器一起使用,用于提供存储在存储器地址中的数据值或复位值。在一些示例中,清理器电路可以使用多读取端口存储器的端口来在先前存储的值上写入已知数据值。在一些示例中,当正在清理所选分区中的逻辑时,在其他分区及其相关联的存储器设备中操作的逻辑可以继续正常操作。
通常,在隔离期间,防止可重新配置逻辑设备的其他用户或管理员请求访问它们各自的分区,但是在一些示例中,管理程序分区或用户分区可以被配置为在这些动作中提供对分区的至少部分访问。通过仅对可重新配置设备的一部分和/或相关资源执行清除和/或清理,可重新配置逻辑设备的其他用户分区中的用户逻辑和存储器以及任何管理程序或主机分区可以维持其编程和状态,而被识别的部分被擦除。因此,多个用户可以同时占用可重新配置逻辑设备的不同部分,并且这些相同用户可以在他们完成使用分区之后,例如,在终止用户计算主机实例时清除和清理它们的分区。
如本文所述,计算服务设施可包括各种计算资源,其中一种类型的计算资源可包括服务器计算机(可替代地称为主计算机),该服务器计算机包括可配置逻辑平台。可配置逻辑平台可以由计算机系统的用户编程或配置,使得计算资源的硬件(例如,可配置逻辑)由用户定制。例如,用户可以对可配置逻辑进行编程,使其充当紧密耦合到服务器计算机的硬件加速器。例如,硬件加速器可以通过服务器计算机的本地互连(例如外围组件互连快速(PCI-Express或PCIe)或IEEE 802.3(以太网)连接)访问。用户可以在服务器计算机上执行应用程序,并且应用程序的任务可以由硬件加速器使用PCIe事务来执行。通过将硬件加速器紧密耦合到服务器计算机,可以减少加速器与服务器计算机之间的延迟,这可以潜在地提高应用程序的处理速度。
计算服务提供者可以使用软件服务来管理计算资源,以管理可配置硬件的配置和操作。作为一个示例,计算服务提供者可以执行逻辑储存库服务以用于摄取用户的硬件或逻辑设计,生成用于基于为用户生成的应用程序逻辑来配置可配置逻辑平台的经验证的配置数据,以及响应于配置可配置逻辑平台的实例的请求而下载经验证的配置数据。配置数据可以包括用于创建用于在终止计算机资源的使用之后清除和清理可重新配置的逻辑设备和连接的组件的电路的数据。下载请求可以来自开发逻辑设计的用户,也可以来自已获得使用逻辑设计许可的用户。因此,逻辑设计可以由计算服务提供者、用户或与用户或计算服务提供者分开的第三方创建。例如,可以向计算服务提供者的用户提供加速器知识产权(IP)的市场,并且用户可以通过从市场中选择加速器来潜在地提高其应用的速度。
图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)请求消息,以及响应消息的结构的定义,其可以是可扩展标记语言(XML)或JavaScript对象表示法(JSON)格式。API可以指定执行动作的一组函数或例程,包括完成特定任务或允许与软件组件交互。当web服务从客户端设备接收API请求时,web服务可以生成对该请求的响应,并将响应发送到请求中标识的端点。附加地或替代地,web服务可以响应于API请求而执行动作,而不生成对请求中标识的端点的响应。
逻辑储存库服务110可以接收API请求130以生成用于可配置硬件平台的配置数据,例如服务器计算机140的可配置硬件142。通常,可配置硬件142包括可重新编程逻辑设备,例如现场可编程门阵列(FPGA)、可配置可编程逻辑器件(CPLD)、可编程逻辑器件(PLD)和可编程存储器资源(例如,电可擦除可编程只读存储器(EEPROM)或闪存)。在一些示例中,一些或所有可配置硬件是一次性可编程的。在一些示例中,逻辑储存库服务110的功能全部或部分地使用服务器计算机140来实现,而在其他示例中,功能是利用与服务器计算机分开的计算机资源来实现的。
API请求130可以由开发者或计算服务提供者的合作伙伴用户始发。请求130可以包括用于指定关于逻辑设计、可配置硬件平台、用户信息、访问权限、生产状态的数据和/或元数据的字段以及用于描述关于逻辑储存库服务110的输入、输出和用户的信息的各种附加字段。作为具体示例,该请求可以包括设计、生产状态(例如试用或生产)、服务的输入或输出的加密状态、对用于存储输入文件(例如硬件设计源代码)的位置的引用、输入文件的类型、可配置硬件的实例类型以及对存储输出文件或报告的位置的引用的描述。特别地,该请求可以包括对硬件设计的引用,该硬件设计指定用于在可配置硬件平台上实现的应用程序逻辑132。当被编程到可配置硬件中时将用于控制应用程序逻辑的操作的主机逻辑134从例如计算服务提供者开发团队接收。应用程序逻辑132和/或主机逻辑134的规范可以是文件的集合,诸如源代码、由逻辑综合工具生成的网表和/或由布局布线工具生成的布局布线逻辑门。源代码可以包括用硬件描述语言(HDL)、寄存器传输逻辑(RTL)语言或诸如开放计算语言(OpenCL)或C的高级语言编写的代码。
计算资源120可以包括按实例类型分类的许多不同类型的硬件和软件。特别地,实例类型指定资源的硬件和软件的至少一部分。例如,硬件资源可以包括具有不同性能级别(例如,不同时钟速度、架构、高速缓存大小等)的中央处理单元(CPU)的服务器,具有和不具有协处理器(诸如图形处理单元(GPU)可配置逻辑)的服务器,具有不同容量和性能的内存和/或本地存储的服务器,以及具有不同联网性能级别的服务器。示例软件资源可以包括不同的操作系统、应用程序和驱动程序。一个示例实例类型可以包括服务器计算机140,其包括与可配置硬件142通信的中央处理单元(CPU)144。可配置硬件142可以包括可编程逻辑,例如FPGA、可编程逻辑阵列(PLA)、可编程阵列逻辑(PAL)、通用阵列逻辑(GAL)或复杂可编程逻辑器件(CPLD)。
逻辑储存库服务110可以响应于接收到API请求130而生成配置数据136。生成的配置数据136可以基于应用程序逻辑132和主机逻辑134。具体地,生成的配置数据136可以包括可用于编程或配置可配置硬件142的信息,以便其执行由应用程序逻辑132和主机逻辑134指定的功能。作为一个示例,计算服务提供者可以生成主机逻辑134,包括用于在CPU144与可配置硬件142之间接口的逻辑。以这种方式,主机逻辑134可以潜在地降低可由应用程序逻辑132引入的安全性和可用性风险。在其他示例中,应用程序逻辑132可以通过例如PCIe、以太网、Infiniband或其他合适的接口等接口直接与CPU144通信。
生成配置数据136可以包括对应用程序逻辑132执行检查和/或测试,将应用程序逻辑132集成到主机逻辑134包装器中,合成应用程序逻辑132,和/或布局布线应用程序逻辑132。
生成配置数据136可以包括将应用程序逻辑132和主机逻辑134的源代码编译和/或转换成可以用于编程或配置可配置硬件142的数据。例如,逻辑储存库服务110可以将应用程序逻辑132集成到主机逻辑134包装器中。具体地,应用程序逻辑132可以在包括应用程序逻辑132和主机逻辑134的系统设计中被实例化。可以使用逻辑合成程序来合成集成系统设计,以创建用于系统设计的网表。可以使用布局布线程序来对网表进行布局和布线,以用于为系统设计指定的实例类型。布局布线的设计可以转换为配置数据136,配置数据136可以用于对可配置硬件142进行编程。例如,配置数据136可以直接从布局布线程序输出。
作为一个示例,所生成的配置数据136可以包括用于配置FPGA的全部或部分可配置逻辑的完整或部分比特流,包括隔离,清除和/或清理可配置逻辑和存储器的部分以及耦合到包括FPGA的集成电路的附加的资源。FPGA可以包括可配置逻辑和不可配置逻辑。可配置逻辑可包括可编程逻辑块,其包括组合逻辑和/或查找表(LUT)和顺序逻辑元件(诸如触发器和/或锁存器),可编程路由和时钟资源,可编程分布式和块随机存取存储器(RAM),数字信号处理(DSP)比特切片和可编程输入/输出引脚。可以使用配置逻辑(例如,配置访问端口)将比特流加载到可配置逻辑的片上存储器中。加载在片上存储器内的值可用于控制可配置逻辑,使得可配置逻辑执行由比特流指定的逻辑功能。另外,可配置逻辑可以被分成不同的分区或区域,这些区域可以彼此独立地配置。作为一个示例,可以使用完整比特流来跨所有区域配置可配置逻辑,并且可以使用部分比特流来仅配置可配置逻辑区域的部分。例如,可以生成主机逻辑部分、第一应用程序逻辑部分、第二应用程序逻辑部分等中的每一个的各个部分比特流,下载到可配置硬件平台,并且用于独立地编程单个FPGA的不同部分。因为可以独立地应用部分比特流,所以不需要将FPGA的其他部分的详细知识提供给其他人,从而保护用户隐私。在一些示例中,可以使用加密来进一步保护一些或所有比特流。不可配置逻辑可以包括在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的硬件。
如上所述,在一些示例中,上述关于逻辑储存库服务110所描述的操作可使用服务器计算机140、使用计算资源120内的其它资源或使用除计算资源120以外的其它资源来执行。
图2是示出逻辑储存库服务205的示例架构200的系统图。逻辑储存库服务205可以是在由计算服务提供者管理的服务器计算机上执行的软件。可以通过一个或多个web API访问逻辑储存库服务205。
逻辑储存库服务205可以包括提供者接口210,用于服务计算服务提供者的API请求。提供者接口210可用于认证来自计算服务提供者的代理的请求,例如通过使用请求中提供的凭证来认证请求者的身份。提供者接口210可以提供主机逻辑摄取功能215。具体地,提供者接口210可以接收将主机逻辑设计上载到逻辑储存库服务205的请求,并且该请求可以由主机逻辑摄取功能215处理。如前所述,主机逻辑可以包括用于沙盒化应用程序逻辑以维持计算资源的安全性和可用性的逻辑。另外,主机逻辑可以进一步分为静态逻辑和可重新配置逻辑。可以在初始化序列期间(例如,在引导时)配置静态逻辑,而可以在可配置逻辑的操作期间的不同时间配置可重新配置逻辑。作为一个示例,PCI Express接口可以指定在取消置位复位信号之后大约一百毫秒内引导和枚举PCI端点。主机逻辑可以分为可以在分配的时间窗口内加载的静态逻辑,以及可以在时间窗口过去之后加载的可重新配置的逻辑。静态逻辑可以用作不同可重新配置区域之间的接口。可以使用使用例如System Verilog、Verilog或VHDL编写的HDL源代码指定主机逻辑设计。HDL源代码可以加密或不加密。在一些示例中,除了HDL源代码之外或代替HDL源代码,可以提供描述逻辑组件的网表。主机逻辑摄取模块215可用于对接收的主机逻辑设计执行检查,解密主机逻辑设计,和/或提供主机逻辑设计的版本控制信息。另外,该请求可以包括用于将主机逻辑设计与一个或多个实例类型相关联的信息。例如,一些主机逻辑设计可以仅与实例类型的一个子集一起工作,而其他主机逻辑设计可以仅与实例类型的不同子集一起工作。
逻辑储存库服务205可以包括用于服务来自逻辑储存库服务205的用户的API请求的客户-开发者接口220。客户-开发者接口220可以用于认证请求来自计算服务提供者的用户,例如通过使用请求中提供的凭证来认证请求者的身份。例如,可以向每个用户提供可以用于识别用户以进行访问管理、计费和使用跟踪的帐户。用户可以限于仅查看和修改他们被授权访问的逻辑设计。例如,可以防止用户上载和/或修改主机逻辑。
客户-开发者接口220可以包括用于接收和/或处理应用程序逻辑设计的应用程序逻辑摄取功能225。可以使用源代码(例如,以SystemVerilog、Verilog、C、SystemC或其他合适的描述语言表示的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,并且可以将配置数据下载到请求资源。静态逻辑下载组件262可用于将静态逻辑下载到请求实例上的可配置硬件平台。另外,请求可以用于可重新配置逻辑,并且可重新配置逻辑下载组件264可以用于服务该请求。具体地,可重新配置逻辑下载可以经由逻辑库管理块240通过逻辑储存库数据库250检索配置数据。该请求可以用于可重新配置的主机逻辑或用于可重新配置的应用程序逻辑。
图3是概述支持虚拟化可重新配置逻辑环境的示例主计算机140的框图300,如可以在所公开技术的某些示例中实现的。
如图所示,可配置硬件142包括已经被编程以实现多个分区的可重新配置逻辑设备。主机逻辑分区310被配置为包括用于监督和控制应用程序逻辑分区的操作的控制逻辑。主机分区可以监督用户分区的操作,包括使用清理器电路312从各个应用程序逻辑分区中隔离,清除和清理数据。主机逻辑分区310被配置为使得它只能从在通用CPU144上执行的主管模式进程315访问。主机逻辑分区310包括静态逻辑和动态逻辑,静态逻辑通常不经常重新编程,动态逻辑通常更频繁地重新编程。例如,每次重新编程或修改应用程序逻辑分区320时,可以重新配置动态逻辑。主机逻辑分区310还包括控制信号发生器,其向应用程序逻辑分区320发送控制信号以及从应用程序逻辑分区320接收控制信号。
可配置硬件142还包括第一应用程序逻辑分区320,其包括可重新配置逻辑资源和存储器324。存储器324可以以多种不同方式实现,包括嵌入式/内部FPGA存储器电路,例如:块RAM,分布式RAM,配置存储器,以及其他形式的可寻址内部存储器。应用程序逻辑分区320可以与可配置硬件142的其他分区隔离,例如,通过在应用程序逻辑分区320的接口处重新编程互连或逻辑,或者通过在控制寄存器中设置在例如三态门、传输门和/或多路复用器的电路上置位控制信号的值,以便将应用程序逻辑分区320与可配置硬件142的其余部分电隔离。
可配置硬件142还包括第二应用程序逻辑分区330。如图3中所示,应用程序逻辑分区中的用户逻辑已经被清理器电路332覆盖。例如,可以通过将配置比特流与用于实现清理器的信息一起应用于配置端口360来提供清理器电路332。在其他示例中,通过使用内部配置电路来提供清理器电路332以用清理器电路重写用户逻辑。清理器电路包括用于擦除存储在可重新配置逻辑的存储元件(例如,锁存器、触发器和存储器)中的数据的电路,以及嵌入式存储器344。可配置硬件142还包括第三应用程序逻辑分区340,其中作为替代示例说明。第三应用程序逻辑分区340具有耦合到其的第三清理器电路342和内部存储器344。第三清理器电路342被配置为擦除存储在用于应用程序逻辑分区340和存储器344的可重新配置逻辑的存储元件中的数据。因此,在一些示例中,仅应用程序逻辑分区包括清理器。在其他示例中,仅主机逻辑分区310包括清理器电路312。在其他示例中,清理器电路跨越包含在主机逻辑分区310和应用程序逻辑分区320中的电路来实现。
在分区的可重新配置设备存储器324,334或344内可以包括任何合适的存储器类型。例如,FPGA通常具有紧凑的较大RAM,称为块RAM,其可以使用静态RAM(SRAM)或嵌入式动态RAM(eDRAM)来实现。清理器电路可以逐步通过内部和/或外部存储器的每个地址,并写入已知的模式,以便擦除先前存储在存储器中的数据。例如,可以使用清理器电路将诸如全零、全1、已知模式(例如,0xdeadbeef)或随机模式的模式写入存储器。在一些其他示例中,还可以使用清理器电路来重新编程其他类型的RAM,诸如分布式RAM、查找表(LUT)RAM或与应用程序逻辑分区的该部分相关联的配置存储器。在一些示例中,FPGA供应商提供可用于实现清理器电路的配置实例。在这样的示例中,配置电路可以包括DMA直接存储器访问接口,其可以耦合到在CPU144上执行的过程之一,以便控制清除和清理操作。在其他示例中,可以通过使用部分重新配置模式将配置比特流应用于可配置硬件142来完成清除。在一些示例中,分区被布置为通过将分区边界与相关配置逻辑的地址边界对齐来促进应用这样的比特流。配置比特流可以用于通过将比特流应用于配置端口360来对可配置硬件142进行编程。
服务器计算机140还可以包括外部存储器370,外部存储器370可以耦合到可配置硬件142内的一个或多个逻辑分区。例如,SRAM、DRAM、电可擦除可编程只读存储器(EEPROM)和/或闪存可以电连接到可配置硬件142,使得一个或多个分区可以读取或写入外部存储器370。通常,提供一些控制电路以防止各个分区写入外部存储器370的相同区域。例如,每个分区可以与外部存储器370的不同地址范围相关联。清理器电路的另一个功能可以是通过例如将已知零模式、已知1模式或随机模式存储在外部存储器370中来擦除存储在外部存储器中的数据。例如,不同类型的清理器312,332和/或342都可以耦合以对外部存储器370进行擦除。
在一些示例中,应用程序逻辑分区被布置为使得它们可以被重新配置而无需调整到其他应用程序逻辑部分的连接。这允许任何应用程序逻辑分区独立于其他应用程序逻辑分区进行重新编程。例如,如果在单个FPGA集成电路上包括两个或更多个应用程序逻辑分区,则可以部分地重新配置FPGA的任何其他部分,以便仅重新编程所选择的应用程序逻辑分区之一。在一些示例中,部分地基于编程粒度和目标FPGA的特征来选择FPGA部分。例如,可以通过将FPGA中的阵列逻辑组件的行范围或列范围分配给不同部分来创建FPGA部分。
主机逻辑和应用程序逻辑部分与在CPU144上执行的单独主机分区(例如,单独的进程或虚拟机)相关联。对于图3中所示的示例,主机逻辑分区310与在CPU144上执行的管理程序模式进程315相关联。管理程序模式进程315以比CPU的其他进程更高的权限级别执行。例如,服务器计算机140的管理员可以是具有足够权限来使用或控制管理程序模式进程315的唯一实体。应用程序逻辑分区320,330和340中的每一个分别与对应的用户模式进程325、335和345相关联。用户模式进程具有比管理员模式进程315更低的权限级别,因此除管理员之外,其他用户也可以控制和使用用户模式进程。
CPU144经由接口350耦合到可配置硬件142。接口350可以用任何合适的互连技术实现,包括但不限于:PCIe,以太网和Infiniband。每个应用程序逻辑部分使用接口350的不同保留部分,以便与其相关的用户模式进程通信。例如,可以允许每个用户模式进程访问不同范围的存储器地址,并且主机逻辑分区310又将每个单独的应用程序逻辑部分仅耦合到与其对应的进程相关联的存储器地址范围。因此,应用程序逻辑进一步独立于其他应用程序逻辑,因为除了与应用程序逻辑分区相关联的那些用户模式进程之外,数据不能发送到用户模式进程或从用户模式进程发送。类似地,管理程序模式进程315可以经由另一个受限制的存储器范围耦合到主机逻辑分区310。
如图3所示,在替代示例中,一些组件可以被配置为占据可配置硬件142的不同部分。例如,应用程序逻辑分区可以不耦合到主机逻辑分区310,而是直接经由互连接口耦合到其关联的用户模式进程。例如,接口350可以被配置为使得应用程序逻辑分区写入特定存储器地址范围,该特定存储器地址范围又与特定用户模式进程相关联,而不通过主机逻辑分区310进行通信。
此外,可配置硬件142可访问的存储器不限于可重新配置设备存储器324,334和344。例如,位于单独的集成电路管芯上的外部存储器370可以通过I/O接口总线耦合到I/O单元的可配置硬件。主机逻辑分区310可以被配置为向外部存储器370写入和从外部存储器370读取。在一些示例中,为每个应用程序逻辑分区提供单独的外部存储器管芯,而在其他示例中,主机逻辑分区310被配置为保持应用程序逻辑分区之间的分离。
在一些示例中,耦合到主机逻辑分区310和/或应用程序逻辑分区320,330或340的每个进程与在由CPU144托管的不同虚拟机中执行的进程相关联。在其他示例中,两个或更多个进程可以在同一虚拟机内执行。
图4示出了可以由逻辑储存库服务执行的摄取逻辑设计和生成配置数据的示例流程400。在摄取410期间,应用程序逻辑405、主机逻辑406和/或清理器逻辑407的描述可以由逻辑储存库服务接收。在一些示例中,应用程序逻辑405实例化用于清理器逻辑407的一个或多个单元实例,并且相应地将清理器电路并入应用程序逻辑中。在一些示例中,清理器电路在RTL或网表中被实例化,结果,清理器电路被并入应用程序逻辑中以执行期望的存储器和/或存储单元的擦除。逻辑设计可以加密,例如使用IEEE1735-2014加密标准。逻辑设计可以在摄取410期间或在流程400的后续步骤期间被解密。
作为一个示例,可以在摄取410期间接收应用程序逻辑405和清理器逻辑407的源代码,并且可以将应用程序逻辑和清理器逻辑组合成设计以产生用于编程可重新配置逻辑器件的第一部分的逻辑合成420的源代码。主机逻辑406的源代码可用于产生用于编程可重新配置逻辑器件的第二部分的逻辑合成420的源代码。逻辑合成420可用于基于目标技术将在行为和/或结构RTL中编写的规范变换为网表。例如,逻辑合成420可以瞄准不同的可配置逻辑技术,例如具有不同架构、制造工艺、容量和/或制造商的FPGA。网表可包括多个可配置逻辑块、不可配置块(例如,硬宏或软宏)以及不同块之间的连接。网表可以是逻辑网表,其中网表的块被枚举但在目标技术中未被放置。网表可以用作布局和布线430的输入。布局和布线430可以从网表和路由信息中获取可配置块的实例,并将块映射到物理的可配置逻辑设备。布局布线设计可以包括网表的每个逻辑组件的物理映射。附加地或替代地,布局和布线430可以是时序驱动的,以便基于设计的时序约束和物理设备的物理约束来修改网表。布局和布线430的输出可以是配置数据,例如比特流映像。配置数据可以被分区或分成不同的组件。例如,配置数据可以包括与静态主机逻辑、可重新配置主机逻辑和/或可重新配置应用程序逻辑相关联的数据。不同的组件可以重叠或不重叠。例如,静态主机逻辑可以通过可重新配置的应用程序逻辑使用的区域进行路由。因此,可重新配置应用程序逻辑的部分比特流还可以包括静态主机逻辑的部分。
作为另一示例,可以在摄取410期间接收应用程序逻辑和/或主机逻辑的网表。作为具体示例,可以为应用程序逻辑接收网表,并且可以为主机逻辑接收源代码。在这种情况下,主机逻辑可以与逻辑合成420合成以生成主机逻辑的网表,并且主机逻辑和应用程序逻辑的网表可以组合成单个设计以产生用于布局和布线430的网表。作为另一示例,可以在摄取410期间接收应用程序逻辑和/或主机逻辑的配置数据。例如,可以接收用于应用程序逻辑设计的部分比特流,或者可以接收用于主机逻辑和应用程序逻辑的完整比特流。作为另一示例,可以接收清除比特流,该比特流在应用于配置端口或内部配置单元时清除可重新配置逻辑设备的全部或部分分区。可以基于底层可重新配置逻辑器件制造商的属性、集成电路设计、容量和其他属性来选择比特流。
作为另一示例,时序报告可以提供静态时序分析,其示出设计是否满足可配置硬件的时序规范。逻辑合成420以及布局和布线430可以涉及随着工具的每次运行而变化的随机的非确定性步骤,使得逻辑合成420以及布局和布线430的每次运行可以提供不同的结果。因此,如果开发者具有不满足时序的设计(如时序报告所示),则开发者可能希望重新运行逻辑合成420和/或布局和布线430。以这种方式,开发者可以通过针对相同设计执行多个合成和路由运行来迭代他们的设计。
库管理和验证440功能可用于在开发和部署步骤期间的各个点处验证可配置逻辑的用户设计。作为一个示例,验证440可以包括执行模拟以核验应用程序逻辑是否与主机逻辑兼容,使得主机逻辑可以约束应用程序逻辑的功能。验证440可以包括比较应用程序逻辑的网表并确认应用程序逻辑满足可配置硬件平台的容量和区域限制。例如,可以限制应用程序逻辑仅使用一个或多个可重新配置区域内的逻辑。如果应用程序逻辑位于这些区域之外,则可以拒绝应用程序逻辑。另外,应用程序逻辑可以作为比特流被摄取,并且比特流可以由验证440验证。比特流的验证可以包括将对应于主机逻辑的摄取比特流数据的一部分与主机逻辑的基线版本进行比较以确认主机逻辑未损坏。验证440的输出可以是经验证的配置数据。
图5示出了示例系统500的进一步细节,该示例系统500包括用于配置和接口到可配置硬件平台510的控制平面和数据平面的组件。控制平面包括用于初始化,监视,重新配置和拆除可配置硬件平台510的功能。数据平面包括用于在用户的应用程序与可配置硬件平台510之间进行通信的功能。控制平面可以由具有较高特权级别的用户或服务访问,并且数据平面可以由具有较低特权级别的用户或服务访问。在一个示例中,可配置硬件平台510使用诸如PCIe的本地互连连接到服务器计算机540。在一些示例中,使用不同的互连,例如以太网或Infiniband。在替代示例中,可配置硬件平台510可以集成在服务器计算机540的硬件内。作为一个示例,服务器计算机540可以是图8的计算服务提供者800的多个服务器计算机802A-802C之一。
主机服务器计算机540具有底层硬件542,其包括一个或多个CPU、存储器、存储设备、互连硬件等。在硬件542上方运行层是管理程序或内核层544。管理程序或内核层可以被分类为类型1或类型2管理程序。类型1管理程序直接在主机硬件542上运行以控制硬件并管理访客操作系统。类型2管理程序在传统的操作系统环境中运行。因此,在类型2环境中,管理程序可以是在操作系统上方运行的不同层,并且操作系统与系统硬件交互。不同类型的管理程序包括基于Xen,Hyper-V,ESXi/ESX,Linux等,但也可以使用其他管理程序。管理进程550(诸如Xen管理程序的域0)可以是管理程序的一部分或者与管理程序分离,并且通常包括访问硬件542所需的设备驱动程序。
诸如用于配置可重新配置逻辑设备(诸如可配置硬件平台510上的FPGA515)的比特流的配置数据可被高速缓存在比特流高速缓存546中,比特流高速缓存546可使用例如耦合到主机服务器计算机的存储器或存储设备来实现。在第一次将比特流存储在比特流高速缓存546中之后,可以使用高速缓存的比特流多次重新编程可配置的硬件平台,从而避免通过网络存储传输配置数据的开销。
用户主机进程560是管理程序内的逻辑隔离单元。每个用户分区560可以被分配其自己的硬件层的存储器部分,CPU分配、存储、互连带宽等。另外,每个用户主机进程560可以包括虚拟机及其自己的访客操作系统。这样,每个用户主机进程560是容量的抽象部分,被设计为独立于其他分区来支持其自己的虚拟机。用户主机进程560以比管理进程550(例如Xen管理程序的域U)更低的权限级别执行。
管理进程550可以用于为用户主机进程560和可配置硬件平台510执行管理服务。管理进程550可以与计算服务提供者的web服务(例如部署服务、逻辑储存库服务和健康监视服务)、用户主机进程560和可配置硬件平台510进行通信。管理服务可以包括用于启动和终止用户主机进程560以及配置,重新配置和拆除可配置硬件平台510的可配置逻辑的服务。作为特定示例,管理进程550可以响应于来自部署服务(例如图8的部署组件826)的请求来启动新用户主机进程560。该请求可以包括对MI和/或CHI的引用。MI可以指定要在用户主机进程560上加载的程序和驱动程序,并且CHI可以指定要在可配置硬件平台510上加载的配置数据。管理进程550可以基于与MI相关联的信息来初始化用户主机进程560,并且可以使与CHI相关联的配置数据被加载到可配置硬件平台510上。用户主机进程560和可配置硬件平台510的初始化可以同时发生,从而可以减少使实例运行的时间。
管理进程550可用于管理可配置硬件平台510的编程和监视。管理进程550还可用于发送和接收用于执行和确认擦除操作的数据,例如可重新配置的逻辑设备和相关资源(例如,存储器)的隔离、清除和清理。在管理进程550与可配置硬件平台510之间发送数据。通过将管理进程550用于这些目的,可以限制对可配置硬件平台510的配置数据和配置端口的访问。具体地,可以限制具有较低权限级别的用户直接访问管理进程550。此外,可以限制具有较低权限级别的用户访问其他应用程序逻辑分区。因此,在不使用计算服务提供者的基础设施的情况下不能修改可配置逻辑,并且可以保护用于编程可配置逻辑的任何第三方IP免于被未授权用户查看。此外,还防止未授权用户检查存储在可配置硬件平台510上的任何未授权分区中的数据。
管理进程550可以包括用于控制平面配置和接口到可配置的硬件平台510的软件栈。控制平面软件栈可以包括用于与web服务(例如,逻辑储存库服务或健康监视服务)、可配置硬件平台510和用户主机进程560通信的可配置逻辑(CL)应用程序管理层552。例如,CL应用程序管理层552可以响应于用户主机进程560被启动而发出获取配置数据的请求。CL应用程序管理层552可以使用硬件542的共享存储器与用户主机进程560通信,或者通过将服务器计算机540连接到可配置硬件平台510的互连发送和接收分区间消息来与用户主机进程560通信。具体地,CL应用程序管理层552可以从可配置硬件平台510的邮箱逻辑521读取消息以及将消息写入可配置硬件平台510的邮箱逻辑521。消息可以包括最终用户应用程序561请求重新配置或拆除(终止)可配置硬件平台510。CL应用程序管理层552可以响应于重新配置可配置硬件平台510的请求而向逻辑储存库服务发出请求以获取配置数据。CL应用程序管理层552可以响应于终止可配置硬件平台510的请求而发起拆除序列。CL应用程序管理层552可以执行看门狗相关的活动以确定到用户主机进程560的通信路径是否有效。
控制平面软件栈可以包括CL配置层554,用于访问可配置硬件平台510的配置端口522(例如,配置访问端口),使得配置数据可以被加载到可配置硬件平台510上。例如,CL配置层554可以向配置端口522发送一个或多个命令以执行可配置硬件平台510的完全或部分配置。CL配置层554可以将配置数据(例如,比特流)发送到配置端口522,以便可以根据配置数据对可配置逻辑进行编程。配置数据可以指定主机逻辑和/或应用程序逻辑。
控制平面软件栈可以包括管理驱动程序556,用于通过将服务器计算机540连接到可配置硬件平台510的物理互连进行通信。管理驱动程序556可以封装源自管理进程550的命令、请求、响应、消息和数据,用于通过物理互连进行传输。另外,管理驱动程序556可以解封装通过物理互连发送到管理进程550的命令、请求、响应、消息和数据。另外,管理驱动程序556可以解封装通过物理互连发送到管理进程550的命令、请求、响应、消息和数据。管理驱动程序556可以通过将事务寻址到分配给互连的地址范围来与主机逻辑分区520进行通信。
控制平面软件栈可以包括CL管理和监视层558。CL管理和监视层558可以监视和分析在物理互连上发生的事务以确定可配置硬件平台510的健康状况和/或确定可配置硬件平台510的使用特性。例如,CL管理和监视层558可以监视配置数据是否成功部署在可配置硬件平台510上,并且可以使指示部署的状态的报告被发送到逻辑储存库服务。
用户服务器570可用于将配置数据575发送到管理进程550。配置数据575可以被验证,然后用于编程应用程序逻辑530的一部分(例如,一个或多个可配置逻辑分区)。用户服务器570还可以向管理分区发送命令以发起编程的分区的操作。随着执行的进行,可以经由管理进程550从用户服务器570发送执行隔离、清除和/或清理操作的命令。在一些替换示例中,用户服务器570与用户主机分区之一通信以便发送用于擦除用户应用程序分区内和与用户应用程序分区关联的存储器和存储单元的数据。
可配置硬件平台510可包括不可配置的硬宏和可配置逻辑。例如,FPGA515可以包括主机逻辑分区520、清理器电路525、配置端口522、邮箱逻辑521和应用程序逻辑530。FPGA515可以耦合到外部组件,例如外部存储器531。硬宏可以在可配置硬件平台510内执行特定功能,例如输入/输出块(例如,串行器和解串器(SERDES)块和千兆位收发器)、模数转换器、存储器控制块、测试访问端口和配置端口522。可以通过将配置数据加载到可配置硬件平台510上来编程或配置可配置逻辑。例如,配置端口522可以用于加载配置数据。作为一个示例,配置数据可以存储在配置端口522可访问的存储器(诸如闪存)中,并且配置数据可以在可配置硬件平台510的初始化序列期间(诸如在通电序列期间)被自动加载。另外,可以使用片外处理器或可配置硬件平台510内的接口来访问配置端口522。
可配置硬件平台510可以包括清理器电路525,其被配置为从应用程序逻辑530擦除数据。例如,清理器电路525可以重新配置逻辑,使得应用程序逻辑的先前用户使用的应用程序逻辑无法由分区的后续用户无法辨别。此外,清理器电路525可以擦除存储在应用程序逻辑分区的存储器和存储元件中的值。例如,可以断言具有置位或复位输入的触发器和锁存器以擦除存储在其中的值。应用程序逻辑分区中的RAM可以使用内置复位功能清除,或者通过清理器将复位值迭代存储到RAM中。例如,可以写入全1的模式、全零的模式、指定模式(例如,0xdeadbeef)或随机模式以擦除RAM和其他存储器。此外,其他逻辑元件,例如I/O电路可以被禁用或复位,例如,通过断言三态门、传输门或多路复用器输入,复位计数器值,重置FIFO或其他队列的头/尾指针,或其他合适的擦除操作。
可配置逻辑可被编程为包括主机逻辑分区520和包括多个应用程序逻辑分区的应用程序逻辑530。主机逻辑分区520可以对最终用户屏蔽至少一些硬宏的接口,使得最终用户具有对硬宏和物理互连的有限访问权。例如,主机逻辑可以将用户主机进程560的访问限于仅访问应用程序逻辑530内的其关联的可配置逻辑分区(例如,仅访问应用程序逻辑分区1、应用程序逻辑分区2或应用程序逻辑分区3中的一个)。在PCIe上下文中,这可以通过将不同的用户主机分区分配给不同的存储器地址范围来实现,方法是通过配置基址寄存器(BAR)来为主机分区和可配置逻辑分区的某些组合保留某些存储器地址范围。
应用程序逻辑530可以包括硬宏和可配置逻辑。应用程序逻辑530可以分成两个或更多个部分,并且每个部分可以分配给一个或多个用户应用程序逻辑分区。每个可配置逻辑分区被主机逻辑分区520排除在访问可配置硬件平台的其他分区之外,主机逻辑分区520管理应用程序逻辑530资源的分区,以及应用程序逻辑530与用户主机进程560之间的通信。
主机逻辑分区520还可以耦合到邮箱逻辑521、配置端口522、主机接口514和应用程序逻辑530。最终用户可以使得用户可配置的应用程序逻辑530被加载在可配置硬件平台510上,可以从用户主机进程560与可配置应用程序逻辑530通信。
主机接口514可以包括用于在物理互连上发信号并实现通信协议的电路(例如,硬宏和/或可配置逻辑)。通信协议规定了通过互连进行通信的规则和消息格式。
在替代示例中,应用程序逻辑530内的分区被配置为在不通过主机逻辑分区520进行通信的情况下传送它们各自的相关联的用户主机进程560。例如,在PCIe上下文中,每个分区与不同的存储器地址范围相关联,可以使用DMA消息传递将数据发送到分区和从分区发送数据。对于使用内部配置电路编程FPGA的示例,可以通过DMA消息传递发送命令和数据来编程电路。
除了应用程序逻辑530内的嵌入式/内部存储器之外,单独的存储器531可以耦合到应用程序逻辑530。可以位于单独的集成电路管芯上的存储器531可以通过I/O接口总线耦合到应用程序逻辑530的I/O个单元。此外,还可以使用清理器电路525清除外部存储器531。例如,外部存储器531可以包括同步动态随机存取存储器设备(DRAM),例如DDR、DDR2、DDR3或DDR4 RAM,或者混合记忆立方体(HMC)。附加资源也可以耦合到FPGA515,包括静态RAM、闪存、可擦除可编程只读存储器,包括EPROMS和EEPROM,包括网络地址信息的网络接口,或伪随机数发生器。
应用程序逻辑530可以用于与用户主机进程560的驱动程序进行通信。在例如PCIe上下文中,通信信道可以被实现为在连接到物理互连的设备枚举期间映射到地址范围的物理或虚拟功能。应用程序驱动程序可以通过将事务处理到分配的地址范围来与应用程序逻辑530通信。具体地,应用程序逻辑530可以与应用程序逻辑管理驱动程序562进行通信,以在控制平面上交换命令、请求、响应、消息和数据。应用程序逻辑530可以与应用程序逻辑数据平面驱动程序563通信,以在数据平面上交换命令、请求、响应、消息和数据。
在一些示例中,应用程序逻辑530的一个可配置逻辑分区被配置为使用单个通信通道/信道与一个用户主机分区560通信。在一些示例中,应用程序逻辑530的一个可配置逻辑分区被配置为使用单个通信通道/信道或者使用每个主机分区的通信通道/信道与两个或更多个主机分区(例如,进程或虚拟机)通信。在一些示例中,一个主机分区被配置为与多个两个或更多个可配置逻辑分区通信,每个可配置逻辑分区使用单独的通信通道/信道。
邮箱逻辑521可包括一个或多个缓冲器和一个或多个控制寄存器。例如,给定的控制寄存器可以与特定缓冲器相关联,并且寄存器可以用作信号量以在管理进程550与用户主机进程560之间同步。作为具体示例,如果分区可以修改控制寄存器的值,分区可以写入缓冲器。可以从主机逻辑分区520访问缓冲器和控制寄存器。在替换示例中,可以从主机逻辑分区520和应用程序逻辑530访问缓冲器和控制寄存器。当消息被写入缓冲器时,可以写入另一个控制寄存器(例如,消息就绪寄存器)以指示消息已完成。消息就绪寄存器可以由分区轮询以确定是否存在消息,或者可以响应于写入消息就绪寄存器而生成中断并将其发送到分区。
用户主机进程560可以包括用于将最终用户进程560接口到可配置硬件平台510的软件栈。应用软件栈可以包括用于与控制平面和数据平面通信的功能。具体地,应用软件栈可以包括CL应用API564,用于向最终用户进程560提供对可配置硬件平台510的访问。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的操作或元数据和/或请求可配置应用程序逻辑530重新配置。
结合管理程序或内核544的应用软件栈可用于限制最终用户应用程序561可通过物理互连执行的操作。例如,计算服务提供者可提供AL管理驱动程序562、AL数据平面驱动程序563和CL应用API564(例如通过将文件与机器映像相关联)。通过仅允许具有比最终用户更高的权限级别的用户和服务对文件进行写入,可以保护这些组件免于修改。AL管理驱动程序562和AL数据平面驱动程序563可以被限制为仅使用相关联的应用程序逻辑的地址范围内的地址。另外,输入/输出存储器管理单元(I/O MMU)可以将互连事务限制在分配给各个分区的地址范围内。
图6是概述从可重新配置逻辑主机移除应用数据的示例方法的流程图600,如可以在所公开技术的某些示例中执行的。例如,上面关于图1-5讨论的主计算机和可配置逻辑设备可以用于实现所示的方法。
在处理框610处,识别先前编程的资源的分区和可重新配置的逻辑设备。例如,分区可以由期望重新编程逻辑资源的用户(例如应用程序开发者)识别。在其他示例中,管理程序进程可以基于虚拟化主机被终止来识别资源分区。例如,可以通过索引来识别分区,该索引指示逻辑资源以及形成分区的相关附加资源的集合。在一些示例中,部分地基于FPGA的属性来定义分区。例如,可以通过FGPA阵列中的一系列行/列号来识别分区。
在处理框620处,将新值存储在处理框610处识别的分区的存储器和/或存储元件中,以便防止从可重新配置逻辑装置读取先前存储的值。例如,FPGA逻辑块通常包含许多触发器、锁存器和存储器元件。零或1的已知值可以存储在这些存储器和存储元件中以便清除数据,从而防止先前存储的数据被同一物理可重新配置逻辑设备的后续用户访问。
在处理框630处,识别与所识别的分区相关联的附加资源。例如,如果外部存储器或该外部存储器的部分已经与所述可重新配置逻辑设备的所识别的分区相关联并且耦合到所识别的分区,则标识这些存储器资源。例如,存储器可以包括同步动态随机存取存储器设备(DRAM),例如DDR、DDR2、DDR3、DDR4 RAM或混合存储器立方体(HMC)。附加资源的其他示例可以包括静态RAM、闪存、可擦除可编程只读存储器,包括EPROMS和EEPROMS,包括网络地址信息的网络接口,或伪随机数发生器。
在处理框640处,将新值存储在附加资源中。例如,可以使用多路复用器暂时将存储器的控制传递给清理电路,使得清理电路可以逐步通过与所识别的分区相关联的地址范围,并将数据模式写入存储器,以便擦除由运行虚拟化实例产生的值。
图7是概述清理包括可重新配置逻辑设备的虚拟主机的示例方法的流程图,如可以在所公开技术的某些示例中执行的。
在处理框710处,启动具有可重新配置逻辑设备的分区的第一虚拟机实例。例如,该实例可以具有执行CPU的用户模式进程,该CPU被耦合以从FPGA的应用程序逻辑分区I/O读取以及写入I/O到FPGA的应用程序逻辑分区。用户进程可以直接与应用程序分区通信,例如与存储器映射总线通信,或者通过用于管理通用CPU与可重新配置逻辑设备的分区之间的连接的主机逻辑分区。通过将配置比特流应用于可重新配置逻辑设备,可以在启动时对可重新配置逻辑设备进行编程。在一些示例中,比特流以局部配置模式应用,以仅重新编程与用户主机进程相关联的那些资源。在其他示例中,在启动时加载默认比特流,然后可以使用在可重新配置逻辑设备内编程的配置电路来重新配置默认比特流。
在处理框720处,使用所识别的分区来执行由用户指定的操作。例如,应用程序逻辑分区可以被配置为为CPU上的用户进程执行的软件提供功能的硬件加速。
在某些时候,将终止虚拟机实例。例如,用户可以终止实例,或者管理员进程可以发起实例的终止。在处理框730处,通过移除关于托管CPU的进程信息来终止虚拟机实例。在一些示例中,当从处理框730转换到处理框740时,短时间段过去。例如,在许多情况下,系统将被配置为使得在虚拟机实例终止之后立即清除和清理可重新配置的逻辑设备分区。在其他示例中,可以使用“惰性”清除和清理,并且允许用户数据驻留在实例中,直到该实例被相同或不同的用户重用。这种惰性清理可以节省一些计算资源,但是存在未授权访问存储在终止分区中的数据的额外风险。
在处理框740处,隔离终止的实例的分区。例如,可以重新编程将分区连接到可重新配置逻辑设备的其余部分的互连和/或逻辑,以便防止访问。在一些示例中,可以使用三态门或传递门逻辑来隔离分区。
在处理框750处,在分区已被隔离之后,清理器电路继续重新编程可配置逻辑并擦除相关存储器。例如,清理器电路可以多次迭代并写入配置值,存储不同的状态值或写入存储器(例如,通过每次迭代递增存储器写地址)以执行重新编程。
在处理框760处,利用第二虚拟机实例重新编程所识别的可重新配置逻辑设备的分区。随后使用计算主机及其关联的可重新配置逻辑设备启动新实例。因此,可以防止对由主计算机的先前用户(包括其可重新配置的逻辑设备)生成的数据进行未经授权的访问。在一些示例中,包括其他可重新配置逻辑分区的用户的其他用户在隔离和重新编程分区时停止其自己的操作。例如,可以在处理框730处停止可重新配置设备的其他分区的活动作为终止虚拟机实例的部分。然后执行上面关于处理框740,750以及在一些情况下处理框760的上述操作,而其他分区停止。在所识别的分区已被重新编程之后,可以恢复对其他分区的操作。在一些情况下,是否停止其他FPGA的操作可以由可重新配置逻辑设备的架构确定。例如,某些FPGA的架构可能不需要在重新编程FPGA的某些部分时停止操作。
图8是基于网络的计算服务提供者800的计算系统图,其示出了可以使用本文描述的示例的一个环境。作为背景,计算服务提供者800(例如,云服务提供者)能够将计算和存储容量作为服务递送到最终接收者社区。在一些示例中,可以由组织或代表组织为组织建立计算服务提供者。也就是说,计算服务提供者800可以提供“私有云环境”。在另一个示例中,计算服务提供者800支持多租户环境,其中多个客户独立地操作(例如,公共云环境)。一般而言,计算服务提供者800可以提供以下模型:基础设施即服务(“IaaS”)、平台即服务(“PaaS”)和/或软件即服务(“SaaS”)。可以提供其他型号。对于IaaS模型,计算服务提供者800可以将计算机提供为物理或虚拟机和其他资源。虚拟机可以由管理程序作为访客运行,如下面进一步描述的。PaaS模型提供了一个计算平台,可以包括操作系统、编程语言执行环境、数据库和web服务器。应用程序开发者可以在计算服务提供者平台上开发和运行他们的软件解决方案,而无需购买和管理底层硬件和软件的花费。此外,应用程序开发者可以在计算服务提供者平台的可配置硬件上开发和运行其硬件解决方案。SaaS模型允许在计算服务提供者中安装和操作应用软件。在一些示例中,最终用户使用联网的客户端设备访问计算服务提供者800,例如运行web浏览器或其他轻量级客户端应用程序的台式计算机、膝上型计算机、平板电脑、智能手机等。本领域技术人员将认识到,计算服务提供者800可以被描述为“云”环境。
特定示出的计算服务提供者800包括多个服务器计算机802A-802C。虽然只显示了三台服务器计算机,但可以使用任何数量,大型中心可以包含数千台服务器计算机。服务器计算机802A-802C可以提供用于执行软件实例806A-806C的计算资源。在一个示例中,软件实例806A-806C是虚拟机。如本领域中已知的,虚拟机是诸如物理机器之类的执行应用程序的机器(即计算机)的软件实现的实例。在虚拟机的示例中,服务器802A-802C中的每一个可以被配置为执行管理程序808或被配置为使得能够在单个服务器上执行多个软件实例806的另一类型的程序。另外,每个软件实例806可以被配置为执行一个或多个应用程序。
应当理解,尽管主要在虚拟机的上下文中描述了本文公开的示例,但是其他类型的实例可以与本文公开的概念和技术一起使用。例如,这里公开的技术可以与存储资源、数据通信资源以及其他类型的计算资源一起使用。这里公开的示例还可以在不利用虚拟机实例的情况下直接在计算机系统上执行应用程序的全部或部分。
服务器计算机802A-802C可以包括不同硬件资源或实例类型的异构集合。一些硬件实例类型可以包括至少部分可由计算服务提供者800的用户配置的可配置硬件。实例类型的一个示例可以包括与可配置硬件804A通信的服务器计算机802A。具体地,服务器计算机802A和可配置硬件804A可以通过诸如PCIe的本地互连进行通信。实例类型的另一示例可包括服务器计算机802B和可配置硬件804B。例如,可配置逻辑804B可以集成在多芯片模块内或与服务器计算机802B的CPU集成在同一管芯上。实例类型的又一示例可以包括服务器计算机802C而没有任何可配置硬件。因此,具有和不具有可配置逻辑的硬件实例类型可以存在于计算服务提供者800的资源内。
可以保留一个或多个服务器计算机820用于执行用于管理服务器计算机802和软件实例806的操作的软件组件。例如,服务器计算机820可以执行管理组件822。客户可以访问管理组件822,用于配置客户购买的软件实例806的操作的各个方面。例如,客户可以购买,出租或租赁实例,并对软件实例的配置进行更改。每个软件实例的配置信息可以作为机器映像(MI)842存储在网络附连存储单元840上。具体地,MI842描述用于启动VM实例的信息。MI可以包括用于实例的根卷的模板(例如,OS和应用程序),用于控制哪些客户帐户可以使用MI的启动许可,以及指定在启动实例时附连到实例的卷的块设备映射。MI还可以包括对可配置硬件映像(CHI)844的引用,可配置硬件映像(CHI)844在实例启动时加载在可配置硬件804上。CHI包括用于编程或配置可配置硬件804的至少一部分的配置数据。
客户还可以指定关于如何响应于需求来缩放所购买的实例的设置。管理组件还可以包括用于实现客户策略的策略文档。自动缩放组件824可以基于客户定义的规则来缩放实例806。在一个示例中,自动缩放组件824允许客户指定用于确定何时应该实例化新实例的放大规则和用于确定何时应该终止现有实例的缩小规则。自动缩放组件824可以包括在不同服务器计算机802或其他计算设备上执行的多个子组件。自动缩放组件824可以监视内部管理网络上的可用计算资源,并根据需要修改可用资源。
部署组件826可用于帮助客户部署计算资源的新实例806。部署组件可以访问与实例相关联的帐户信息,例如谁是帐户的所有者,信用卡信息,所有者的国家等。部署组件826可以从客户接收包括描述应如何配置新实例806的数据的配置。例如,配置可以指定要安装在新实例806中的一个或多个应用程序,提供要执行以配置新实例806的脚本和/或其他类型的代码,提供指定应如何准备应用程序高速缓存的高速缓存逻辑,以及其他类型的信息。部署组件826可以利用客户提供的配置和高速缓存逻辑来配置,准备和启动新实例806。可以由客户使用管理组件822或通过将该信息直接提供给部署组件826来指定配置、高速缓存逻辑和其他信息。实例管理器可以被认为是部署组件的部分。
客户帐户信息828可以包括与多租户环境的客户相关联的任何期望信息。例如,客户帐户信息可以包括客户的唯一标识符、客户地址、帐单信息、许可信息、用于启动实例的定制参数、调度信息、自动缩放参数、用于访问帐户的先前IP地址、可供客户访问的MI和CHI的列表等。
可以保留一个或多个服务器计算机830用于执行用于管理配置数据到服务器计算机802的可配置硬件804的下载的软件组件。例如,服务器计算机830可以执行包括摄取组件832、库管理组件834和下载组件836的逻辑储存库服务。摄取组件832可以接收主机逻辑和应用程序逻辑设计或规范,并生成可用于配置可配置硬件804的配置数据。库管理组件834可以用于管理与逻辑储存库服务关联的源代码、用户信息和配置数据。例如,库管理组件834可用于将从用户的设计生成的配置数据存储在用户在网络附连存储单元840上指定的位置。具体地,配置数据可以存储在网络附连存储单元840上的可配置硬件映像844内。此外,库管理组件834可以管理输入文件的版本化和存储(例如应用程序逻辑和主机逻辑的规范)以及关于逻辑设计和/或逻辑储存库服务的用户的元数据。例如,库管理组件834可以通过诸如用户标识符、实例类型、市场标识符、机器映像标识符和可配置硬件标识符之类的一个或多个属性来索引所生成的配置数据。下载组件836可用于认证对配置数据的请求,并在请求被认证时将配置数据发送到请求者。例如,当启动使用可配置硬件804的实例806时,服务器计算机802A-B上的代理可以向下载组件836发送请求。作为另一个示例,当实例806在可配置硬件804运行时请求可配置硬件804被部分重新配置时,服务器计算机802A-B上的代理可以向该下载组件836发送请求。
网络附连存储单元(NAS)840可用于提供存储空间和对存储在NAS840上的文件的访问。例如,NAS840可包括用于使用网络文件共享协议,例如网络文件系统(NFS)来处理请求的一个或多个服务器计算机。NAS840可以包括可移动或不可移动的介质,包括磁盘、存储域网络(SAN)、独立磁盘冗余阵列(RAID)、磁带或磁带盒、CD-ROM、DVD或任何其他用于以非暂时方式存储信息并且可以通过网络850访问的介质。
网络850可用于互连服务器计算机802A-802C、服务器计算机820和830以及存储单元840。网络850可以是局域网(LAN)并且可以连接到广域网(WAN)860使得最终用户可以访问计算服务提供者800。应当理解,
图8中所示的网络拓扑结构已经简化,并且可以利用更多的网络和联网设备来互连这里公开的各种计算系统。
图9描绘了其中可以实现所描述的创新的合适计算环境900的一般化示例。计算环境900不旨在对使用范围或功能提出任何限制,因为创新可以在不同的通用或专用计算系统中实现。例如,计算环境900可以是各种计算设备中的任何一种(例如,台式计算机、膝上型计算机、服务器计算机、平板计算机等)。
参考图9,计算环境900包括一个或多个处理单元910,915和存储器920,925。在图9中,该基本配置930包括在虚线内。处理单元910,915执行计算机可执行指令。处理单元可以是通用中央处理单元(CPU)、专用集成电路(ASIC)中的处理器或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力。例如,图9示出了中央处理单元910以及图形处理单元或协处理单元915。有形存储器920,925可以是可由处理单元访问的易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)或两者的某种组合。存储器920,925以适于由处理单元执行的计算机可执行指令的形式存储实现本文描述的一个或多个创新的软件980。
计算系统可具有附加特征。例如,计算环境900包括存储单元940,一个或多个输入设备950、一个或多个输出设备960以及一个或多个通信连接970。互连机制(未示出),例如总线、控制器或网络互连计算环境900的组件。通常,操作系统软件(未示出)为在计算环境900中执行的其他软件提供操作环境,并协调计算环境900的组件的活动。
有形存储单元940可以是可移动的或不可移动的,并且包括磁盘、磁带或盒式磁带、CD-ROM、DVD或可用于以非暂时性方式存储信息并且可以在计算环境900内访问的任何其他介质。存储单元940存储用于实现本文描述的一个或多个创新的软件980的指令。
输入设备950可以是触摸输入设备,诸如键盘、鼠标、笔或轨迹球,语音输入设备,扫描设备,或向计算环境900提供输入的另一设备。输出设备960可以是显示器、打印机、扬声器、CD写入器或提供来自计算环境900的输出的另一设备。
通信连接970使得能够通过通信介质与另一计算实体进行通信。通信介质在已调制数据信号中传送诸如计算机可执行指令、音频或视频输入或输出之类的信息或其他数据。已调制数据信号是以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质可以使用电、光、RF或其他载体。
尽管为了便于呈现,以特定的顺序次序描述了一些所公开的方法的操作,但是应该理解,这种描述方式包括重新布置,除非下面阐述的特定语言需要特定的排序。例如,在某些情况下,顺序描述的操作可以重新排列或同时执行。此外,为了简单起见,附图可能未示出所公开的方法可以与其他方法结合使用的各种方式。
任何所公开的方法可以实现为存储在一种或多种计算机可读存储介质(例如,一个或多个光学介质盘、易失性存储器组件(诸如DRAM或SRAM)或非易失性存储器组件(诸如闪存或硬盘驱动程序))上并且在计算机(例如,任何商用计算机,包括智能电话或包括计算硬件的其他移动设备)上执行的计算机可执行指令。术语计算机可读存储介质不包括通信连接,例如信号和载波。用于实现所公开的技术的任何计算机可执行指令以及在所公开的示例的实现期间创建和使用的任何数据可以存储在一种或多种计算机可读存储介质上。计算机可执行指令可以是例如专用软件应用程序或经由web浏览器或其他软件应用程序(诸如远程计算应用程序)访问或下载的软件应用程序的一部分。这样的软件可以例如使用一个或多个网络计算机在单个本地计算机(例如,任何合适的商用计算机)上或在网络环境中(例如,经由因特网、广域网、局域网、客户端-服务器网络(例如云计算网络)或其他此类网络)执行。
为清楚起见,仅描述了基于软件的实现方式的某些所选方面。省略了本领域公知的其他细节。例如,应该理解,所公开的技术不限于任何特定的计算机语言或程序。例如,所公开的技术可以通过用C、C++、Java、Perl或任何其他合适的编程语言编写的软件来实现。同样地,所公开的技术不限于任何特定计算机或硬件类型。合适的计算机和硬件的某些细节是众所周知的,并且不需要在本公开中详细阐述。
还应该很好地理解,本文描述的任何功能可以至少部分地由一个或多个硬件逻辑组件而不是软件来执行。例如但不限于,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统式系统(SOC)、复杂可编程逻辑器件(CPLD)等。
此外,可以通过合适的通信手段上载,下载或远程访问任何基于软件的示例(包括,例如,用于使计算机执行任何所公开的方法的计算机可执行指令)。这种合适的通信手段包括,例如,因特网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信或其他此类通信手段。
可以鉴于以下条款来描述本公开的实施例:
1.一种系统,包括:
计算主机,包括一个或多个处理器;以及
单个现场可编程门阵列(FPGA),配置成多个逻辑设备部分,这些部分包括:
一个或多个应用程序逻辑分区,每个应用程序逻辑分区包括:(1)可重新配置逻辑和(2)耦合到可重新配置逻辑的存储器设备,该存储器设备通过应用程序逻辑分区的相应可重新配置逻辑的操作来访问,
主机逻辑分区,以及
内部配置电路,被配置为擦除存储在所选择的一个应用程序逻辑分区中的数据。
2.如条款1所述的系统,其中:
内部配置电路被配置为擦除的数据包括存储在所选择的一个应用程序逻辑分区的锁存器、触发器或配置存储器中的一个或多个中的数据;以及
内部配置电路还被配置为擦除存储在存储器设备中的数据,并且其中存储器设备包括FPGA的内部RAM。
3.根据前述任一条款所述的系统,其中,所述内部配置电路还被配置为经由直接存储器访问(DMA)接收指令或数据,所述直接存储器访问使得所述内部配置电路擦除所述数据。
4.根据前述任一条款所述的系统,其中,所述内部配置电路还被配置为通过将所选择的应用程序逻辑分区与其他分区分离来在擦除之前隔离所选择的应用程序逻辑分区。
5.一种方法,包括:
响应于从可重新配置的硬件平台接收到擦除应用程序数据的请求:
识别可重新配置逻辑设备中先前编程的资源的分区;
将新值存储在所识别分区的存储器或存储元件中;
识别与所识别的可编程资源的分区相关联的附加资源;以及
将新值存储在所述附加资源的存储器或存储元件中。
6.如条款5所述的方法,其中在所识别的分区中存储新值包括:通过所述可重新配置逻辑设备的配置端口在所述可重新配置逻辑设备中配置清除逻辑,以改变所述存储器或存储元件中的值。
7.如条款5或6所述的方法,其中在终止包括所述可重新配置逻辑主机的实例时生成所述请求。
8.如条款5-7中任一项所述的方法,其中从在耦合到所述可重新配置逻辑设备的主计算机上执行的管理程序进程接收所述请求。
9.如条款5-8中任一项所述的方法,其中所述可重新配置逻辑设备包括由在主计算机上执行的管理程序进程控制的主机分区,并且其中,在所识别的分区中执行存储新值包括操作所述主机分区内的电路以清理存储在所识别的分区中的值。
10.条款5-9中任一项的方法,还包括:
重新配置所识别的分区的逻辑以包括清理器电路,其中所述清理器电路执行将所述新值存储在所识别的分区的存储器或存储元件中或将新值存储在所述附加资源的存储器或存储元件中
11.如条款5-10中任一项所述的方法,其中所识别的分区包括耦合到所述附加资源的清理器电路,并且其中,所述方法还包括:操作所述清理器电路以执行将所述新值存储在所述附加资源中。
12.如条款5-11中任一项所述的方法,其中在分区中存储新值包括将已知模式值存储在存储器或存储元件中,已知的值模式包括:全零值,全1值,全部一组预定的一个或多个值或随机值。
13.如条款5-12中任一项所述的方法,其中所述可重新配置逻辑设备包括多个分区,所述分区包括所识别的分区,所述方法还包括:
继续操作其他分区中的电路,同时在所识别的分区的存储器或存储元件中执行存储新值。
14.如条款5-13中任一项所述的方法,其中所述附加资源包括耦合到包括所述可重新配置逻辑设备的集成电路的以下设备中的至少一个:同步动态随机存取存储器设备(DRAM),混合存储器立方体(HMC),协处理器,包括网络地址信息的网络接口,或伪随机数发生器。
15.条款5-14中任一项的方法,其中:
该方法还包括通过可重新配置逻辑主机从逻辑储存库数据库接收清除比特流;以及
在所识别的分区中存储新值包括将清除比特流应用于可重新配置逻辑设备的内部或外部配置端口。
16.条款5-15中任一项的方法,还包括:
从耦合到可重新配置逻辑设备的主计算机接收要编程到所识别的分区中的应用程序逻辑的描述;
生成包括应用程序逻辑和内部配置电路的配置数据;以及
利用所述配置数据对所述可重新配置逻辑设备进行编程以形成用于应用程序逻辑和内部配置电路的电路,其中所述内部配置电路被配置为执行将新值存储在所识别的部分中或将新值存储在附加资源的存储器或存储元件中。
17.条款5-16中任一项的方法,还包括:
启动耦合到所识别的可重新配置逻辑设备的分区和附加资源的虚拟机实例;
利用所识别的分区,执行在通过计算机网络从用户接收的指令中指定的操作;以及
终止虚拟机实例,终止包括通过执行将新值存储在所识别的部分和附加资源中来擦除数据。
18.条款5-17中任一项的方法,还包括:
启动耦合到所识别的可重新配置逻辑设备的分区和附加资源的第一虚拟机实例;
终止第一虚拟机实例;以及启动第二虚拟机实例,其中第二启动包括通过延迟在所识别的部分和附加资源中存储新值直到第二启动被发起来擦除所识别的分区。
19.一种系统,包括:
计算主机,包括一个或多个处理器;
耦合到计算主机的可重新配置逻辑设备,所述可重新配置逻辑设备具有划分为多个用户逻辑分区的逻辑,每个所述用户逻辑分区由在所述计算主机上执行的不同进程控制;以及
重新配置电路,被配置为通过覆写存储器和存储单元中的值并清除所选用户逻辑分区的逻辑配置来从所选择的一个用户逻辑分区中擦除数据。
20.如条款19所述的系统,其中所述重新配置电路还被配置为从耦合到包括所述可重新配置逻辑设备的集成电路的附加资源中擦除数据,所述附加资源与所选择的用户逻辑分区相关联。
21.如条款19或20所述的系统,其中所述重新配置电路还被配置为通过将配置比特流应用于所述可重新配置逻辑设备来从所选择的逻辑分区中擦除数据。
22.如条款19-21中任一项所述的系统,其中,所述重新配置电路还被配置为:当所述重新配置电路擦除所述数据时,允许所述可重新配置逻辑设备内的除了所选择的用户逻辑分区以外的分区继续操作。
23.如条款19-22中任一项所述的系统,其中重新配置电路通过直接存储器存取(DMA)连接耦合到主计算机,并且其中主计算机被配置为经由DMA连接发送命令或数据,该命令或数据导致重新配置电路擦除数据。
24.如条款19-23中任一项所述的系统,其中:
存储器包括:
块随机存取存储器(RAM),
静态RAM;
动态RAM,
闪存,
嵌入式DRAM,
配置存储器,
分布式RAM,或
查找表RAM;和
所述存储单元包括:
锁存器,或
触发器。
所公开的方法、装置和系统不应被解释为以任何方式进行限制。相反,本公开内容针对各种公开的示例的所有新颖和非显而易见的特征和方面,单独地并且以彼此的各种组合和子组合。所公开的方法、装置和系统不限于任何特定方面或特征或其组合,所公开的示例也不要求存在任何一个或多个特定优点或解决问题。
鉴于可以应用所公开技术的原理的许多可能的示例,应该认识到,所示示例仅是优选示例,不应被视为限制权利要求的范围。相反,要求保护的主题的范围由以下权利要求限定。因此,我们针对本发明声称所有这些都在这些权利要求的范围内。

Claims (15)

1.一种方法,包括:
响应于从可重新配置的硬件平台接收到擦除应用程序数据的请求:
识别可重新配置逻辑设备中先前编程的资源的分区;
将新值存储在所识别分区的存储器或存储元件中;
识别与所识别的可编程资源的分区相关联的附加资源;以及
将新值存储在所述附加资源的存储器或存储元件中。
2.根据任一前述权利要求所述的方法,其中,在所识别的分区中存储新值包括:通过所述可重新配置逻辑设备的配置端口在所述可重新配置逻辑设备中配置清除逻辑,以改变所述存储器或存储元件中的值。
3.根据任一前述权利要求所述的方法,其中,在终止包括所述可重新配置逻辑主机的实例时生成所述请求。
4.根据任一前述权利要求所述的方法,其中,从在耦合到所述可重新配置逻辑设备的主计算机上执行的管理程序进程接收所述请求。
5.根据任一前述权利要求所述的方法,其中,所述可重新配置逻辑设备包括由在主计算机上执行的管理程序进程控制的主机分区,并且其中,在所识别的分区中执行存储新值包括操作所述主机分区内的电路以清理存储在所识别的分区中的值。
6.根据任一前述权利要求所述的方法,还包括:
重新配置所识别的分区的逻辑以包括清理器电路,其中所述清理器电路执行将所述新值存储在所识别的分区的存储器或存储元件中或将新值存储在所述附加资源的存储器或存储元件中。
7.根据任一前述权利要求所述的方法,其中,所识别的分区包括耦合到所述附加资源的清理器电路,并且其中,所述方法还包括:操作所述清理器电路以执行将所述新值存储在所述附加资源中。
8.根据任一前述权利要求所述的方法,其中,所述可重新配置逻辑设备包括多个分区,所述分区包括所识别的分区,所述方法还包括:
继续操作其他分区中的电路,同时在所识别的分区的存储器或存储元件中执行存储新值。
9.根据任一前述权利要求所述的方法,其中:
该方法还包括通过可重新配置逻辑主机从逻辑储存库数据库接收清除比特流;以及
在所识别的分区中存储新值包括将清除比特流应用于可重新配置逻辑设备的内部或外部配置端口。
10.根据任一前述权利要求所述的方法,还包括:
从耦合到可重新配置逻辑设备的主计算机接收要编程到所识别的分区中的应用程序逻辑的描述;
生成包括应用程序逻辑和内部配置电路的配置数据;以及
利用所述配置数据对所述可重新配置逻辑设备进行编程以形成用于应用程序逻辑和内部配置电路的电路,其中所述内部配置电路被配置为执行将新值存储在所识别的部分中或将新值存储在附加资源的存储器或存储元件中。
11.根据任一前述权利要求所述的方法,还包括:
启动耦合到所识别的可重新配置逻辑设备的分区和附加资源的虚拟机实例;
利用所识别的分区,执行在通过计算机网络从用户接收的指令中指定的操作;以及
终止虚拟机实例,终止包括通过执行将新值存储在所识别的部分和附加资源中来擦除数据。
12.根据任一前述权利要求所述的方法,还包括:
启动耦合到所识别的可重新配置逻辑设备的分区和附加资源的第一虚拟机实例;
终止第一虚拟机实例;以及
启动第二虚拟机实例,其中第二启动包括通过延迟在所识别的部分和附加资源中存储新值直到第二启动被发起来擦除所识别的分区。
13.一种系统,包括:
计算主机,包括一个或多个处理器;
耦合到计算主机的可重新配置逻辑设备,所述可重新配置逻辑设备具有划分为多个用户逻辑分区的逻辑,每个所述用户逻辑分区由在所述计算主机上执行的不同进程控制;以及
重新配置电路,被配置为通过覆写存储器和存储单元中的值并清除所选用户逻辑分区的逻辑配置来从所选择的一个用户逻辑分区中擦除数据。
14.根据权利要求13所述的系统,其中,所述重新配置电路还被配置为从耦合到包括所述可重新配置逻辑设备的集成电路的附加资源中擦除数据,所述附加资源与所选择的用户逻辑分区相关联。
15.根据权利要求13或14所述的系统,其中,所述重新配置电路还被配置为通过将配置比特流应用于所述可重新配置逻辑设备来从所选择的逻辑分区中擦除数据。
CN201780060298.7A 2016-09-30 2017-09-28 控制在可重新配置逻辑设备中访问先前存储的逻辑 Pending CN110088741A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/282,148 US10642492B2 (en) 2016-09-30 2016-09-30 Controlling access to previously-stored logic in a reconfigurable logic device
US15/282,148 2016-09-30
PCT/US2017/054180 WO2018064419A1 (en) 2016-09-30 2017-09-28 Controlling access to previously-stored logic in a reconfigurable logic device

Publications (1)

Publication Number Publication Date
CN110088741A true CN110088741A (zh) 2019-08-02

Family

ID=60162248

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780060298.7A Pending CN110088741A (zh) 2016-09-30 2017-09-28 控制在可重新配置逻辑设备中访问先前存储的逻辑

Country Status (5)

Country Link
US (2) US10642492B2 (zh)
EP (1) EP3519979A1 (zh)
JP (1) JP6886014B2 (zh)
CN (1) CN110088741A (zh)
WO (1) WO2018064419A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110502911A (zh) * 2019-08-16 2019-11-26 苏州浪潮智能科技有限公司 一种基于Faas云服务配置vFPGA的方法、设备以及存储介质
CN110781506A (zh) * 2019-10-18 2020-02-11 浪潮电子信息产业股份有限公司 一种虚拟化fpga的运行方法、运行装置及运行系统
CN111814207A (zh) * 2020-06-10 2020-10-23 深圳市中网信安技术有限公司 现场可编程门阵列数据处理方法及装置、可读存储介质
CN112596494A (zh) * 2020-12-04 2021-04-02 中国航空工业集团公司成都飞机设计研究所 一种基于hmc码相关性分析的飞行器故障定位方法
CN112925483A (zh) * 2021-03-26 2021-06-08 中国科学院微电子研究所 一种NAND Flash控制器接口电路及闪存系统
CN114222982A (zh) * 2020-06-18 2022-03-22 F5网络公司 编排可编程加速器的配置
CN114222982B (zh) * 2020-06-18 2024-07-05 F5网络公司 对可编程加速器的配置进行编排的方法及其系统

Families Citing this family (30)

* Cited by examiner, † Cited by third party
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
US10795742B1 (en) 2016-09-28 2020-10-06 Amazon Technologies, Inc. Isolating unresponsive customer logic from a bus
US11099894B2 (en) 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US10223317B2 (en) * 2016-09-28 2019-03-05 Amazon Technologies, Inc. Configurable logic platform
US10250572B2 (en) 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
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
US11398906B2 (en) 2016-11-10 2022-07-26 Brickell Cryptology Llc Confirming receipt of audit records for audited use of a cryptographic key
US11405201B2 (en) 2016-11-10 2022-08-02 Brickell Cryptology Llc Secure transfer of protected application storage keys with change of trusted computing base
US10855465B2 (en) * 2016-11-10 2020-12-01 Ernest Brickell Audited use of a cryptographic key
US11115293B2 (en) 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider
US10963001B1 (en) 2017-04-18 2021-03-30 Amazon Technologies, Inc. Client configurable hardware logic and corresponding hardware clock metadata
WO2018228693A1 (en) * 2017-06-15 2018-12-20 Telefonaktiebolaget Lm Ericsson (Publ) Hardware platform based on fpga partial reconfiguration for wireless communication device
US11474555B1 (en) * 2017-08-23 2022-10-18 Xilinx, Inc. Data-driven platform characteristics capture and discovery for hardware accelerators
CN111512285A (zh) * 2017-12-25 2020-08-07 三菱电机株式会社 设计辅助装置、设计辅助方法及程序
US11204835B2 (en) 2018-10-12 2021-12-21 Supermem, Inc. Error correcting memory systems
CN111414129B (zh) * 2019-01-07 2023-05-05 阿里巴巴集团控股有限公司 基于云的fpga控制数据的配置系统和方法以及电子设备
CN110618827A (zh) * 2019-08-26 2019-12-27 国网河南省电力公司洛阳供电公司 一种内置flash的fpga远程升级方法
US10957381B1 (en) * 2019-08-28 2021-03-23 Micron Technology, Inc. Metadata grouping for un-map techniques
US11687279B2 (en) * 2020-01-27 2023-06-27 Samsung Electronics Co., Ltd. Latency and throughput centric reconfigurable storage device
US20210303315A1 (en) * 2020-03-31 2021-09-30 Src Labs, Llc Application logic architecture defining separate processing planes
CN111459679B (zh) * 2020-04-03 2023-10-27 宁波大学 一种用于5g通信测试仪表测试数据的并行处理方法
US11662923B2 (en) 2020-07-24 2023-05-30 Gowin Semiconductor Corporation Method and system for enhancing programmability of a field-programmable gate array
US11468220B2 (en) * 2020-07-24 2022-10-11 Gowin Semiconductor Corporation Method and system for enhancing programmability of a field-programmable gate array via a dual-mode port
US20220179929A1 (en) * 2020-12-09 2022-06-09 Synopsys, Inc. Obfuscating encrypted register transfer logic model of a circuit
CN113657061B (zh) * 2021-08-19 2023-08-18 无锡中微亿芯有限公司 可实现不同配置应用过程间数据传递的fpga
CN114237676B (zh) * 2021-12-28 2023-12-08 湖南云箭智能科技有限公司 一种fpga逻辑更新方法、装置、设备及可读存储介质
CN116541898B (zh) * 2023-07-07 2023-10-13 山东多次方半导体有限公司 一种基于fpga实现多算法可重配置的密码卡设计方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002001425A2 (en) * 2000-06-23 2002-01-03 Xilinx, Inc. Method for remotely utilizing configurable hardware
US6438737B1 (en) * 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
CN101615106A (zh) * 2008-06-23 2009-12-30 国际商业机器公司 用于虚拟化sas存储适配器的方法和系统
US20120005473A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Secure Dynamically Reconfigurable Logic
US8621597B1 (en) * 2004-10-22 2013-12-31 Xilinx, Inc. Apparatus and method for automatic self-erasing of programmable logic devices

Family Cites Families (153)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5887165A (en) 1996-06-21 1999-03-23 Mirage Technologies, Inc. Dynamically reconfigurable hardware system for real-time control of processes
US6026226A (en) 1996-10-28 2000-02-15 Altera Corporation Local compilation in context within a design hierarchy
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 富士ゼロックス株式会社 情報処理システム、回路情報管理方法および回路情報記憶装置
EP1351154A2 (en) 1998-11-20 2003-10-08 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
US6595921B1 (en) 1999-09-14 2003-07-22 Acuson Corporation Medical diagnostic ultrasound imaging system and method for constructing a composite ultrasound image
US7678048B1 (en) 1999-09-14 2010-03-16 Siemens Medical Solutions Usa, Inc. Medical diagnostic ultrasound system and method
US6678646B1 (en) 1999-12-14 2004-01-13 Atmel Corporation Method for implementing a physical design for a dynamically reconfigurable logic circuit
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
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
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
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
US7404023B1 (en) 2005-01-14 2008-07-22 Xilinx, Inc. Method and apparatus for providing channel bonding and clock correction arbitration
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
US8219988B2 (en) 2007-08-02 2012-07-10 International Business Machines Corporation Partition adjunct for data processing system
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 富士通株式会社 画像データ検証方法及び画像データ検証システム
US8145894B1 (en) 2008-02-25 2012-03-27 Drc Computer Corporation Reconfiguration of an accelerator module having a programmable logic device
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)
US8499267B2 (en) 2009-03-03 2013-07-30 Nec Corporation Delay library generation apparatus and method based on wiring arrangements
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
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
JP5653865B2 (ja) * 2011-08-23 2015-01-14 日本電信電話株式会社 データ処理システム
EP2751970A1 (en) 2011-08-31 2014-07-09 Thomson Licensing Method for a secured backup and restore of configuration data of an end-user device, and device using the method
US8726337B1 (en) 2011-09-30 2014-05-13 Emc Corporation Computing with presentation layer for multiple virtual machines
WO2013081629A1 (en) 2011-12-02 2013-06-06 Empire Technology Development. Llc Integrated circuits as a service
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
US8775576B2 (en) 2012-04-17 2014-07-08 Nimbix, Inc. Reconfigurable cloud computing
US9619292B2 (en) 2012-04-30 2017-04-11 Alcatel Lucent Resource placement in networked cloud based on resource constraints
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
WO2014116206A1 (en) 2013-01-23 2014-07-31 Empire Technology Development Llc Management of hardware accelerator configurations in a processor chip
US9361416B2 (en) 2013-01-30 2016-06-07 Empire Technology Development Llc Dynamic reconfiguration of programmable hardware
US8928351B1 (en) 2013-03-13 2015-01-06 Xilinx, Inc. Emulating power domains in an integrated circuit using partial reconfiguration
JP2014178784A (ja) * 2013-03-13 2014-09-25 Ricoh Co Ltd 情報処理装置、情報処理システム及び情報処理プログラム
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
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
US20160239906A1 (en) 2013-08-27 2016-08-18 Empire Technology Development Llc Speculative allocation of instances
US9098662B1 (en) 2013-08-28 2015-08-04 Altera Corporation Configuring a device to debug systems in real-time
CN105579959B (zh) 2013-09-24 2019-06-07 渥太华大学 硬件加速器虚拟化
CN105706053A (zh) * 2013-11-06 2016-06-22 英派尔科技开发有限公司 通过在数据中心处的协处理器的制图进行恶意攻击防止
US10461937B1 (en) 2013-12-18 2019-10-29 Amazon Technologies, Inc. Hypervisor supported secrets compartment
EP3089033B1 (en) 2013-12-27 2020-10-07 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
US9503093B2 (en) 2014-04-24 2016-11-22 Xilinx, Inc. Virtualization of programmable integrated circuits
US9851998B2 (en) 2014-07-30 2017-12-26 Microsoft Technology Licensing, Llc Hypervisor-hosted virtual machine forensics
US10230591B2 (en) 2014-09-30 2019-03-12 Microsoft Technology Licensing, Llc Network resource governance in multi-tenant datacenters
US9672935B2 (en) 2014-10-17 2017-06-06 Lattice Semiconductor Corporation Memory circuit having non-volatile memory cell and methods of using
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
US9916175B2 (en) 2015-01-25 2018-03-13 Objective Interface Systems, Inc. Multi-session zero client device and network for transporting separated flows to device sessions via virtual nodes
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
US9983938B2 (en) 2015-04-17 2018-05-29 Microsoft Technology Licensing, Llc Locally restoring functionality at acceleration components
US10027543B2 (en) 2015-04-17 2018-07-17 Microsoft Technology Licensing, Llc Reconfiguring an acceleration component among interconnected 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
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
US10686688B2 (en) 2016-07-22 2020-06-16 Intel Corporation Methods and apparatus to reduce static and dynamic fragmentation impact on software-defined infrastructure 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
US10223317B2 (en) 2016-09-28 2019-03-05 Amazon Technologies, Inc. Configurable logic platform
US11099894B2 (en) 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US10338135B2 (en) 2016-09-28 2019-07-02 Amazon Technologies, Inc. Extracting debug information from FPGAs in multi-tenant environments
US10162921B2 (en) 2016-09-29 2018-12-25 Amazon Technologies, Inc. Logic repository service
US10250572B2 (en) 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10282330B2 (en) 2016-09-29 2019-05-07 Amazon Technologies, Inc. Configurable logic platform with multiple reconfigurable regions
US10642492B2 (en) 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
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
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
WO2018227518A1 (en) 2017-06-16 2018-12-20 Intel Corporation Reconfigurable device bitstream key authentication
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
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438737B1 (en) * 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
WO2002001425A2 (en) * 2000-06-23 2002-01-03 Xilinx, Inc. Method for remotely utilizing configurable hardware
US8621597B1 (en) * 2004-10-22 2013-12-31 Xilinx, Inc. Apparatus and method for automatic self-erasing of programmable logic devices
CN101615106A (zh) * 2008-06-23 2009-12-30 国际商业机器公司 用于虚拟化sas存储适配器的方法和系统
US20120005473A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Secure Dynamically Reconfigurable Logic

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110502911A (zh) * 2019-08-16 2019-11-26 苏州浪潮智能科技有限公司 一种基于Faas云服务配置vFPGA的方法、设备以及存储介质
CN110781506A (zh) * 2019-10-18 2020-02-11 浪潮电子信息产业股份有限公司 一种虚拟化fpga的运行方法、运行装置及运行系统
CN111814207A (zh) * 2020-06-10 2020-10-23 深圳市中网信安技术有限公司 现场可编程门阵列数据处理方法及装置、可读存储介质
CN114222982A (zh) * 2020-06-18 2022-03-22 F5网络公司 编排可编程加速器的配置
CN114222982B (zh) * 2020-06-18 2024-07-05 F5网络公司 对可编程加速器的配置进行编排的方法及其系统
CN112596494A (zh) * 2020-12-04 2021-04-02 中国航空工业集团公司成都飞机设计研究所 一种基于hmc码相关性分析的飞行器故障定位方法
CN112596494B (zh) * 2020-12-04 2023-02-10 中国航空工业集团公司成都飞机设计研究所 一种基于hmc码相关性分析的飞行器故障定位方法
CN112925483A (zh) * 2021-03-26 2021-06-08 中国科学院微电子研究所 一种NAND Flash控制器接口电路及闪存系统

Also Published As

Publication number Publication date
JP2019534508A (ja) 2019-11-28
WO2018064419A1 (en) 2018-04-05
US20180095670A1 (en) 2018-04-05
US11275503B2 (en) 2022-03-15
US10642492B2 (en) 2020-05-05
EP3519979A1 (en) 2019-08-07
US20200257454A1 (en) 2020-08-13
JP6886014B2 (ja) 2021-06-16

Similar Documents

Publication Publication Date Title
CN110088741A (zh) 控制在可重新配置逻辑设备中访问先前存储的逻辑
US11119150B2 (en) Extracting debug information from FPGAs in multi-tenant environments
US11863406B2 (en) Networked programmable logic service provider
US11074380B2 (en) Logic repository service
CN109791508A (zh) 具有多个可重配置区域的可配置逻辑平台
CN110998555B (zh) 支持可适应性主机逻辑的逻辑仓储服务
CN109791536A (zh) 可配置逻辑平台
CN110383246A (zh) 虚拟机控制可编程硬件的单独子集
CN110520847A (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