CN109791508B - 具有多个可重配置区域的可配置逻辑平台 - Google Patents

具有多个可重配置区域的可配置逻辑平台 Download PDF

Info

Publication number
CN109791508B
CN109791508B CN201780060351.3A CN201780060351A CN109791508B CN 109791508 B CN109791508 B CN 109791508B CN 201780060351 A CN201780060351 A CN 201780060351A CN 109791508 B CN109791508 B CN 109791508B
Authority
CN
China
Prior art keywords
logic
application
host
reconfigurable
configurable
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.)
Active
Application number
CN201780060351.3A
Other languages
English (en)
Other versions
CN109791508A (zh
Inventor
阿西夫·可汗
伊斯兰·穆罕默德·哈特姆·阿卜杜勒法塔赫·穆罕默德·阿塔
罗伯特·迈克尔·约翰逊
马克·布拉德利·戴维斯
克里斯托弗·约瑟夫·佩蒂
纳菲亚·巴沙拉
埃雷兹·伊森伯格
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 CN109791508A publication Critical patent/CN109791508A/zh
Application granted granted Critical
Publication of CN109791508B publication Critical patent/CN109791508B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Abstract

以下描述针对可配置逻辑平台。在一个示例中,可配置逻辑平台包括主机逻辑和多个可重配置逻辑区域。每个可重配置区域可以包括可配置为实现应用程序逻辑设计的硬件。主机逻辑可以用于单独地封装每个可重配置的逻辑区域。主机逻辑可以包括多个数据路径功能,其中每个数据路径功能可以包括用于格式化主机接口和相应的可重配置逻辑区域的应用程序逻辑之间的数据传输的层。主机接口可以被配置为分配由相应可重配置逻辑区域的应用程序逻辑生成的数据传输的带宽。

Description

具有多个可重配置区域的可配置逻辑平台
背景技术
云计算是使用在远程位置可用并且可通过诸如因特网的网络访问的计算资源(硬件和软件)。在一些布置中,用户能够根据需要购买这些计算资源(包括存储和计算能力)作为实用程序。云计算通过用户的数据、软件和计算来委托远程服务。虚拟计算资源的使用可以提供许多优点,包括成本优势和/或快速适应变化的计算资源需求的能力。
大型计算机系统的用户可能具有由不同用例导致的各种计算要求。云或计算服务提供商可以提供具有不同类型的组件的各种不同的计算机系统,这些组件具有不同级别的性能和/或功能。因此,用户可以选择在执行特定任务时可能更有效的计算机系统。例如,计算服务提供商可以为系统提供处理性能、内存性能、存储容量或性能以及网络容量或性能的不同组合。云服务提供商的重点是提供可由许多不同客户共享的通用硬件。云服务提供商可能面临挑战,即为用户提供专用计算硬件,同时保持通用资源的健康组合,以便可以在不同用户之间有效地分配资源。
附图说明
图1是示出包括可配置逻辑平台的系统的示例的系统图。
图2是示出包括可配置逻辑平台的系统的另一示例的系统图。
图3是示出包括用于将配置数据提供给可配置逻辑平台的逻辑储存库服务的系统的示例的系统图。
图4是示出在包括具有可配置逻辑平台的服务器计算机的多租户环境中运行的多个虚拟机实例的示例系统图。
图5示出了图4的示例系统的进一步细节,其包括用于配置和连接到可配置硬件平台的控制平面和数据平面的组件。
图6是在多租户环境中获取、配置和使用可配置硬件的配置数据的示例方法的序列图。
图7是使用可配置硬件平台的示例方法的流程图。
图8是示出服务器计算机的示例的系统图,该服务器计算机包括具有在集成电路上配置的多个客户逻辑设计的集成电路。
图9描绘了可以实现所描述的创新的合适计算环境的一般化示例。
具体实施方式
一些用户可能希望使用专有或高度专用的硬件来执行计算任务。用于在一组可重复使用的通用计算资源内提供专用计算资源的一种解决方案是提供包括可配置逻辑平台的服务器计算机(诸如通过向服务器计算机提供包括现场可编程门阵列(FPGA)的附加卡)作为一般计算资源的选择。如本文所使用的,术语可配置逻辑平台和可配置硬件平台是可互换的。可配置逻辑是可被编程或配置为执行逻辑功能的硬件,该逻辑功能由应用于或加载在可配置逻辑上的配置数据指定。例如,计算资源的用户可以提供用于配置可配置逻辑的规范(诸如以硬件描述语言编写的源代码),可配置逻辑可以根据规范来配置,并且配置的逻辑可以用于为用户执行任务。然而,允许用户访问计算设施的低级硬件可能潜在地在计算设施内引入安全性和隐私问题。作为具体示例,如果配置的逻辑导致计算设施内的一个或多个服务器计算机发生故障(例如,崩溃、挂起或重启)或被拒绝使用网络服务,则来自一个用户的错误或恶意设计可能潜在地导致拒绝提供服务给其他用户。作为另一具体示例,如果配置的逻辑能够读取和/或写入另一用户的存储空间的存储器,则来自一个用户的错误或恶意设计可能潜在地破坏或读取来自另一用户的数据。作为另一具体示例,如果配置的逻辑包括使得设备超过功耗或可配置逻辑平台温度规范的电路(例如环形振荡器),则来自用户的错误或恶意设计可能潜在地导致可配置逻辑平台发生故障。
如本文所述,计算服务设施可包括各种计算资源,其中一种类型的计算资源可包括服务器计算机,该服务器计算机包括可配置逻辑平台。可配置逻辑平台可以由计算机系统的用户编程或配置,使得计算资源的硬件(例如,可配置逻辑)由用户定制。例如,用户可以对可配置逻辑进行编程,使其充当紧密耦合到服务器计算机的硬件加速器。作为具体示例,可以通过服务器计算机的本地互连(例如,外围组件互连快速(PCI-Express或PCIe))访问硬件加速器。用户可以在服务器计算机上执行应用程序,并且应用程序的任务可以由硬件加速器使用PCIe事务来执行。通过将硬件加速器紧密耦合到服务器计算机,可以减少加速器和服务器计算机之间的延迟,这可以潜在地提高应用程序的处理速度。
在一个实施例中,可配置逻辑平台可以由计算机系统的多个用户编程或配置,使得可配置硬件可以加速共享计算资源的多个用户的应用程序。当多个用户共享资源时,可能会引入其他隐私、安全性和可用性问题。例如,一个用户可以通过消耗服务器计算机的CPU与可配置逻辑平台之间的不公平的带宽份额来潜在地节制另一个用户。作为另一示例,一个用户可以通过消耗可配置逻辑平台的任何共享资源的不公平份额来潜在地限制另一用户。作为另一示例,一个用户可以通过观察可配置逻辑平台的响应时间或其他性能测量来潜在地监视另一用户的活动。
计算服务提供商可以通过在可配置逻辑平台的主机逻辑内包装或封装每个用户的硬件加速器(这里也称为应用程序逻辑)来潜在地提高计算资源的隐私性、安全性和/或可用性。封装应用程序逻辑可以包括限制或节制应用程序逻辑对配置资源、物理接口、可配置逻辑平台的硬宏以及可配置逻辑平台的各种外围设备的访问。例如,计算服务提供者可以管理可配置逻辑平台的编程,使得它包括主机逻辑和应用程序逻辑。主机逻辑可以为应用程序逻辑提供在其中工作的框架或沙箱。特别是,主机逻辑可以与应用程序逻辑通信并约束应用程序逻辑的功能。例如,主机逻辑可以在本地互连(例如,PCIe互连)和应用程序逻辑之间执行桥接功能,使得应用程序逻辑不能直接控制本地互连上的信令。主机逻辑可以负责在本地互连上形成分组或总线事务,并确保满足协议要求。通过控制本地互连上的事务,主机逻辑可以潜在地防止格式错误的事务或事务到越界位置。作为另一示例,主机逻辑可以隔离配置访问端口,使得应用程序逻辑不会在不使用由计算服务提供商提供的服务的情况下使可配置逻辑平台被重新编程。作为另一示例,主机逻辑可以管理本地互连上的突发脉冲大小和带宽以及可配置逻辑平台的内部资源,以潜在地增加确定性和服务质量。通过将带宽分配给本地互连和内部资源,每个用户可以接收更确定的性能,并且一个客户不能直接或间接地确定另一个客户是否正在共享可配置逻辑平台的资源。
图1是示出包括可配置逻辑平台110和服务器计算机120的计算系统100的示例的系统图。例如,服务器计算机120可用于为多个最终用户执行应用程序。具体地,服务器计算机120可以包括一个或多个中央处理单元(CPU)122、存储器124和外围设备接口126。CPU122可以用于执行存储在存储器124中的指令。例如,每个最终用户可以执行加载在存储器124中并由监督程序或操作系统内核管理的不同虚拟机128A-B。每个虚拟机128A-B可以加载不同的应用程序,并且CPU 122可以执行应用程序的指令。每个应用程序可以通过使用外围设备接口126发布事务来与可配置逻辑平台110的硬件加速器通信。作为另一个例子,虚拟机128A-B之一(例如,128A)可以执行与一个或多个远程服务器计算机(未示出,例如管理服务器计算机120的计算服务的控制平面计算机)通信的管理或控制内核。远程服务器计算机可以执行与在虚拟机128A上执行的控制内核通信的虚拟机,使得远程虚拟机可以经由在虚拟机128A上执行的控制内核与可配置逻辑平台110的硬件加速器通信。
如本文所使用的,事务是组件之间的通信。作为具体示例,事务可以是读取请求、写入、读取响应、消息、中断或组件之间的其他各种信息交换。事务可以在由多个组件共享的总线上发生。具体地,可以调制总线的信号线的值,以使用总线的通信协议在总线上传送信息。事务可以在一个或多个阶段发生,例如地址阶段和一个或多个数据阶段。附加地或替代地,可以使用连接两个组件的点对点互连的一个或多个串行线来进行事务。具体地,可以在通过点对点互连传输的分组中发送事务。
外围设备接口126可以包括用于使用本地或前侧互连在CPU 122之间进行通信的桥和使用外围或扩展互连的组件。具体地,外围设备接口126可以连接到物理互连,该物理互连用于将服务器计算机120连接到可配置逻辑平台110和/或其他组件。例如,物理互连可以是用于使用共享并行总线或串行点对点链路将多个组件连接在一起的扩展总线。作为具体示例,物理互连可以是PCI express、PCI或将服务器计算机120紧密地耦合到可配置逻辑平台110的另一物理互连。因此,服务器计算机120和可配置逻辑平台110可以使用例如PCI总线事务或PCIe数据包进行通信。
可配置逻辑平台110可包括多个可重配置逻辑区域140A-B和主要在111处示出的主机逻辑。在一个实施例中,可配置逻辑平台110可包括安装到印刷电路的一个或多个集成电路,该印刷电路板被配置为插入物理互连的扩展槽中。作为一个示例,一个或多个集成电路可以是单个FPGA,并且不同的可重配置逻辑区域140A-B可以是FPGA的不同区或区域。作为另一示例,一个或多个集成电路可以是多个FPGA,并且不同的可重配置逻辑区域140A-B可以对应于不同的相应FPGA或FPGA组。作为特定示例,可配置逻辑平台110可以包括八个FPGA,并且特定可重配置逻辑区域140A-B可以对应于一组一个、两个或四个FPGA。作为另一示例,一个或多个集成电路可以包括具有硬连线电路和多个不同的可重配置逻辑区域140A-B的专用集成电路(ASIC)。特别地,主机逻辑的全部或一部分可以包括硬连线电路。在另一实施例中,可配置逻辑平台110可包括安装到服务器计算机120的主板的一个或多个集成电路。在另一实施例中,可配置逻辑平台110可集成在片上系统(SOC)或包括CPU 122的多芯片模块上。
主机逻辑111可以包括主机接口112、管理功能114和多个数据路径功能116A-B。每个可重配置逻辑区域140A-B可以包括可配置为实现硬件加速器或应用程序逻辑的硬件。换句话说,每个可重配置逻辑区域140A-B可包括可编程以执行给定功能的逻辑。例如,可重配置逻辑区域140A-B可以包括可编程逻辑块,其包括组合逻辑和/或查找表(LUT)和顺序逻辑元件(诸如触发器和/或锁存器)、可编程路由和时钟资源、可编程分布式和块随机存取存储器(RAM)、数字信号处理(DSP)数元截割和可编程输入/输出引脚。应当注意,为了便于说明,在以下描述中通常省略字母后缀,除非后缀可以提供额外的清晰度(例如,可重配置逻辑区域140A可以被称为可重配置逻辑区域140,等等)。还应注意,虽然图1中示出了两个可重配置逻辑区域140,但是不同量的可重配置逻辑区域140是可能的(例如,例如四个、八个或十个)。
主机逻辑可用于封装可重配置逻辑区域140。例如,可重配置逻辑区域140可使用预定义接口与可配置硬件平台的各种组件接口,使得可重配置逻辑区域140受功能限制。它可以执行。作为一个示例,可重配置逻辑区域可以与在配置可重配置逻辑区域140之前加载的静态主机逻辑接口。例如,静态主机逻辑可以包括将可配置逻辑平台110的不同组件与可重配置逻辑区域140隔离的逻辑。作为一个示例,可配置逻辑平台110的硬宏(例如配置访问端口或用于物理互连上的信令的电路)可以被屏蔽掉,以使可重配置逻辑区域140不能直接访问硬宏。另外,可重配置逻辑区域140A-B可以彼此屏蔽。因此,可重配置逻辑区域140A不能与可重配置逻辑区域140B接口,反之亦然。
主机逻辑可以包括用于与服务器计算机120通信的主机接口112。具体地,主机接口112可以用于连接到物理互连并且使用物理互连的通信协议与服务器计算机120通信。作为一个示例,服务器计算机120可以使用包括与可配置逻辑平台110相关联的地址的事务与可配置逻辑平台110通信。类似地,可配置逻辑平台110可以使用包括与服务器计算机120相关联的地址的事务与服务器计算机120通信。与连接到物理互连的各种设备相关联的地址可以由系统架构师预定义并编程到驻留在设备上的软件中。附加地或替代地,通信协议可以包括枚举序列,其中查询连接到物理互连的设备,并且其中地址被分配给每个设备作为枚举序列的一部分。作为一个示例,外围设备接口126可以向连接到物理互连的每个设备发出查询。主机接口112可以通过提供关于可配置逻辑平台110的信息来响应查询,例如可配置逻辑平台110上存在多少功能,以及与可配置逻辑的每个功能相关联的地址范围的大小。基于该信息,可以分配计算系统100的地址,使得连接到物理互连的每个设备的每个功能被分配非重叠的地址范围。在枚举之后,主机接口112可以基于事务的地址将事务路由到可配置逻辑平台110的功能。
主机逻辑可以包括可以用于管理和配置可配置逻辑平台110的管理功能114。可以使用以一地址范围为目标的事务从服务器计算机120向管理功能114发送命令和数据。例如,服务器计算机120可以生成事务以传输数据(例如,配置数据)和/或写可配置逻辑平台110的控制寄存器,其被映射到管理功能114的地址范围内的一个或多个地址。写入控制寄存器可以使可配置逻辑平台110执行操作,例如配置和管理可配置逻辑平台110。作为具体示例,对应于将在可重配置逻辑区域140中实现的应用程序逻辑的配置数据可以在物理互连上的一个或多个事务中从服务器计算机120发送到可配置逻辑平台110。用配置数据配置可重配置逻辑区域140的事务150可以从服务器计算机120发送到可配置逻辑平台110。具体地,事务150可以将值写入映射到管理功能114地址空间的控制寄存器,开始配置可重配置逻辑区域140。不同值和/或不同控制寄存器可用于在配置可重配置逻辑区域140A或可重配置逻辑区域140B之间进行选择。在一个实施例中,在可重配置逻辑区域140的配置开始之前,可以将配置数据从服务器计算机120传送到可配置逻辑平台110。例如,管理功能114可以使配置数据存储在可配置逻辑平台110可访问的片上或片外存储器中,并且当正在配置可重配置逻辑区域140时,可以从存储器读取配置数据。在另一个实施例中,在可重配置逻辑区域140的配置开始之后,可以将配置数据从服务器计算机120传送到可配置逻辑平台110。例如,可以编写控制寄存器以开始可重配置逻辑区域140的配置,并且当管理功能114处理包括配置数据的事务时,配置数据可以流传输或加载到可重配置逻辑区域140上。
主机逻辑可以包括数据路径功能116,其可以用于在服务器计算机120和可配置逻辑平台110之间交换信息(例如,应用程序输入/输出160)。具体地,数据路径功能116A可用于在服务器计算机120和可重配置逻辑区域140A之间交换信息,并且数据路径功能116B可用于在服务器计算机120和可重配置逻辑区域140B之间交换信息。命令和数据可以使用以数据路径功能116的地址范围为目标的事务从服务器计算机120发送到数据路径功能116。具体地,可以为数据路径功能116A分配第一地址范围并且可以为数据路径功能116B分配第二不同的地址范围。可配置逻辑平台110可以使用包括与服务器计算机120相关联的地址的事务与服务器计算机120通信。
数据路径功能116可以充当主机接口112和可重配置逻辑区域140之间的转换层。具体地,数据路径功能116可以包括用于从可重配置逻辑区域140接收信息的接口,并且数据路径功能116可以格式化用于从主机接口112传输的信息。格式化信息可以包括生成一个或多个事务的控制信息并将数据分区为大小满足协议规范的块。因此,数据路径功能116可以插入在可重配置逻辑区域140和物理互连之间。以这种方式,可以潜在地阻止可重配置逻辑区域140格式化事务并直接控制用于驱动物理互连的信号,使得可重配置逻辑区域140不能用于无意或恶意地违反物理互连的协议。
主机接口112可以作为数据路径功能116A-B与物理互连之间的层插入。主机接口112可以通过物理互连实施执行事务的带宽、等待时间、大小和其他服务质量因素。例如,主机接口112可以分配源自数据路径功能116A-B和管理功能114的事务的输出带宽。作为一个例子,可以将为每个数据路径功能116A-B分配的输出带宽指定为物理互连的可用带宽的一半。源自管理功能114的事务可能不频繁但是高优先级的。因此,管理功能114可以被赋予用于通过物理互连发送事务的最高优先级。或者,可以为管理功能114分配固定数量的带宽,以从分配给数据路径功能116A-B的带宽的预算中获取。分配给每个功能的带宽百分比可以是固定的或可编程的。例如,映射到管理功能114地址空间的一个或多个控制寄存器可用于编程分配给每个功能的带宽的分配。主机接口112还可以控制源自数据路径功能116A-B和管理功能114的事务的最大规模事务。当最大规模事务增加时可以更有效地利用物理互连,这是因为对于给定数量的开销或控制事务信息(例如包头)可能有更多数据被传送。但是,较大的事务大小可能会增加后续事务的延迟,因为稍后的事务在早期事务完成之前无法开始。因此,但是在物理互连上控制事务大小,可能影响事务的等待时间和/或有效带宽利用率。事务的最大规模可以是主机逻辑的固定参数,或者可以使用映射到管理功能114地址空间的一个或多个控制寄存器来编程。
总之,可以使用可配置逻辑平台110的可重配置硬件来加速在服务器计算机120上运行的多个客户的应用程序。作为一个示例,服务器计算机120可以托管多个虚拟机128A-B,其中每个虚拟机机器由不同的用户操作。虚拟机128A-B可以运行可以由加载到可配置逻辑平台110上的应用程序逻辑加速的应用程序。具体地,虚拟机128A可以执行可以由加载到可重配置逻辑区域140A上的应用程序逻辑加速的应用程序。应用程序可以使用寻址到数据路径功能116A的事务与可重配置逻辑区域140A通信。可重配置逻辑区域140A的响应可以使用源自数据路径功能116A的事务返回到在虚拟机128A上执行的应用程序。对应于来自数据路径功能116A的事务的带宽可以在与来自其他功能(例如数据路径功能116B)的事务相对应的带宽中分配。通过控制事务的带宽和/或大小,加速器的响应可能更具确定性,并且一个用户可能更难以确定另一用户正在使用可配置逻辑平台110的加速器。
另外,不同的虚拟机128A-B和应用程序逻辑设计可彼此隔离,以在共享计算基础设施的部分的同时为不同的客户提供安全的私有计算环境。例如,在服务器计算机120上执行的主机逻辑111和/或监督程序可以限制对不同虚拟机128A-B和应用程序逻辑设计的访问,使得客户彼此隔离。具体地,主机逻辑111和/或监督程序可以防止由一个客户执行的虚拟机(例如,128A)访问不同客户的应用程序逻辑(例如,140B);主机逻辑111和/或监督程序可以防止由一个客户执行的虚拟机(例如,128A)访问由不同客户执行的虚拟机(例如,128B);并且主机逻辑111和/或监督程序可以防止一个客户的应用程序逻辑(例如,140A)访问由不同客户执行的虚拟机(例如,128B)。另外,主机逻辑111可以防止一个客户的应用程序逻辑(例如,140A)访问不同客户的应用程序逻辑(例如,140B)。因此,系统100可以潜在地为虚拟机128A-B和编程到可重配置逻辑区域140A-B上的应用程序逻辑设计提供安全环境。
图2是示出包括可配置硬件平台210和服务器计算机220的系统200的示例的系统图。服务器计算机220和可配置硬件平台210可以经由物理互连230连接。例如,物理互连230可以是PCI Express、PCI或将服务器计算机220紧密地耦合到可配置硬件平台210的任何其他互连。服务器计算机220可以包括CPU 222、存储器224和互连接口226。例如互连接口226可以提供桥接能力,使得服务器计算机220可以访问服务器计算机220外部的设备。例如,互连接口226可以包括主机功能,例如PCI Express中使用的根复合功能。
可配置硬件平台210可包括可重配置逻辑块和其他硬件。可配置逻辑块可被配置或编程为执行可配置硬件平台210的各种功能。可重配置逻辑块可以用不同配置多次编程,使得块可以在设备的寿命期间执行不同功能。可配置硬件平台210的功能可以基于每个功能的目的或能力来分类,或者基于何时将功能加载到可配置硬件平台210中来分类。例如,可配置硬件平台210可以包括静态逻辑、可重配置逻辑和硬宏。可以在不同时间配置静态逻辑、可重配置逻辑和硬宏的功能。因此,可以递增地加载可配置硬件平台210的功能。
硬宏可以执行预定义功能,并且在可配置硬件平台210通电时可用。例如,硬宏可以包括执行特定功能的硬连线电路。作为具体示例,硬宏可以包括用于配置可配置硬件平台210的配置端口211、用于传送串行数据的串行器-解串器收发器(SERDES)212、用于信令的存储器或动态随机存取存储器(DRAM)控制器213和控制片外存储器(例如双倍数据速率(DDR)DRAM 281)、以及用于信令和控制存储设备282的存储控制器214。
可以在引导时将静态逻辑加载到可重配置的逻辑块上。例如,指定静态逻辑功能的配置数据可以在引导启动序列期间从片上或片外闪存设备加载。引导启动序列可以包括检测功率事件(诸如通过检测电源电压已经从低于阈值转变到高于阈值)并且响应于功率事件而使复位信号解除。可以响应于电源事件或解除复位而触发初始化序列。初始化序列可包括读取存储在闪存设备上的配置数据,并使用配置端口211将配置数据加载到可配置硬件平台210上,使得至少一部分可重配置逻辑块用静态逻辑的功能编程。在加载静态逻辑之后,可配置硬件平台210可以从加载状态转换到包括静态逻辑的功能的操作状态。
当可配置硬件平台210可操作的同时(例如,在已经加载静态逻辑之后),可重配置逻辑可被加载到可重配置逻辑块上。对应于可重配置逻辑的配置数据可以存储在片上或片外存储器中和/或配置数据可以从可配置硬件平台210的接口(例如,互连接口256)接收或流传输。可重构逻辑可以划分为非重叠区域,其可以与静态逻辑接口。例如,可重配置区域可以布置成阵列或其他规则或半规则结构。例如,阵列结构可以包括孔或块,其中硬宏放置在阵列结构内。通过使用可被指定为静态逻辑的可编程信号线,不同的可重配置区域能够彼此、与静态逻辑和硬宏通信。可以在不同的时间点配置不同的可重配置区域,使得可以在第一时间点配置第一可重配置区域,并且可以在第二时间点配置第二可重配置区域。
可配置硬件平台210的功能可以基于功能的目的或能力来划分或分类。例如,功能可以分类为控制平面功能、数据平面功能和共享功能。控制平面可用于可配置硬件平台210的管理和配置。数据平面可用于管理加载到可配置硬件平台210上的加速器逻辑与服务器计算机220之间的数据传输。共享功能可由控制平面和数据平面两者使用。在加载数据平面功能之前,可以将控制平面功能加载到可配置硬件平台210上。控制平面可以包括可配置硬件平台210的主机逻辑。数据平面可以包括配置有应用程序逻辑240A-B的多个封装的可重配置逻辑区域。应当注意,虽然封装的可重配置逻辑240A-B的不同区域在图2的图示中被示出为重叠,但是不同区域240A-B的物理位置通常被放置在一个或多个集成电路的非重叠区域中。而且,虽然仅示出了封装的可重配置逻辑240A-B的两个不同区域,但是更多区域是可能的。
通常,可以使用可配置硬件平台210的不同功能来访问控制平面和数据平面的不同区域,其中不同的功能被分配给不同的地址范围。具体地,可以使用管理功能252来访问控制平面功能,并且可以使用数据路径功能或应用程序功能254A-B来访问数据平面功能。地址映射层250可以区分绑定到控制平面的事务或数据平面的不同功能。特别地,可以使用事务内的地址来识别来自绑定到可配置硬件平台210的服务器计算机220的事务。具体地,如果事务的地址落在分配给可配置硬件平台210的地址范围内,则事务发往可配置硬件平台210。分配给可配置硬件平台210的地址范围可以跨越分配给每个不同的功能的地址范围。事务可以通过物理互连230发送并在互连接口256处接收。互连接口256可以是物理互连230的端点。应该理解,物理互连230可以包括布置在用于将设备或组件连接到服务器计算机220的结构中的附加设备(例如,交换机和桥)。
地址映射层250可以分析事务的地址并基于地址确定在可配置硬件平台210内路由事务的位置。例如,可以为管理功能252分配第一地址范围,并且可以通过使用该范围内的不同地址来访问管理平面的不同功能。具有落在分配给管理功能252的范围内的地址的事务可以通过主机逻辑专用结构260路由到控制平面的不同块。例如,事务可以寻址到管理和配置块262。类似地,应用程序功能254A可以被分配第二地址范围,应用程序功能254B可以被分配第三地址范围,以及数据平面的不同功能可以通过使用这些范围内的不同地址来访问。
管理和配置块262可以包括与管理和配置可配置硬件平台210有关的功能。例如,管理和配置块262可以提供对配置端口211的访问,以便可以配置可重配置的逻辑块。例如,服务器计算机220可以将事务发送到管理和配置块262,以开始在封装的可重配置逻辑240A或240B内加载应用程序逻辑。对应于应用程序逻辑的配置数据可以从服务器计算机220发送到管理功能252。管理功能252可以通过主机逻辑结构260将对应于应用程序逻辑的配置数据路由到配置端口211,以便可以加载应用程序逻辑。
作为另一示例,管理和配置块262可以存储关于可配置硬件平台210的元数据。例如,不同逻辑块的版本,更新历史和其他信息可以存储在管理和配置块的存储器中。服务器计算机220可以读取存储器以检索一些或所有元数据。具体地,服务器计算机220可以发送以管理和配置块262的存储器为目标的读取请求,并且管理和配置块262可以生成读取响应数据以返回到服务器计算机220。
管理功能252还可以用于访问可配置硬件平台210的专用外围设备。专用外围设备是仅可从控制平面访问的组件。例如,专用外围设备可以包括JTAG(例如,IEEE 1149.1)控制器270、发光显示器(LED)271、微控制器272、通用异步接收器/发送器(UART)273、存储器274(例如、串行外围设备接口(SPI)闪存)、以及可从控制平面而非数据平面访问的任何其他组件。管理功能252可以通过主机逻辑专用结构260和专用外围设备接口275的路由命令来访问专用外围设备。专用外围设备接口275可以直接与专用外围设备通信。
公共外围设备是可从控制平面或数据平面访问的共享功能。例如,可以通过寻址分配给管理功能252的地址范围内的事务从控制平面访问公共外围设备。可以通过寻址分配给应用程序功能254的地址范围内的事务从数据平面访问公共外围设备。因此,公共外围设备是可以具有多个地址映射的组件,并且可以由控制平面和数据平面使用。公共外围设备的示例是其他可配置硬件平台(CHP(s))280、DRAM 281(例如,DDR DRAM)、存储设备282(例如,硬盘驱动器和固态驱动器)、以及其他各种组件可用于生成、存储或处理信息。可以经由公共外围设备接口285访问公共外围设备。因此,公共外围设备接口285可以是插入在公共外围设备和可配置硬件平台210的其他功能之间的中间层。具体地,公共外围设备接口285可以转换来自控制平面或数据平面的请求并且将与公共外围设备的通信格式化为公共外围设备的本地协议。
另外,公共外围设备接口285可用于控制对公共外围设备的全部或部分的访问和/或隔离。作为一个示例,访问逻辑286可以实施到公共外围设备和来自公共外围设备的事务的带宽、等待时间、大小和其他服务质量因素。例如,访问逻辑286可以在来自以公共外围设备为目标的不同功能的请求之间进行仲裁。访问逻辑286可以实施公平的访问分配,使得源自一个可重配置逻辑区域的请求不会使源自另一个可重配置逻辑区域的请求或来自管理功能252的请求饿死。作为特定示例,访问逻辑286可以实施访问公共外围设备的每个组件的轮叫调度访问分配。在一个实施例中,访问逻辑286可以向管理功能252提供外围设备的最高优先级。另外,访问逻辑286可以对公共外围设备和不同组件之间的传输实施大小限制。通过实施大小限制,访问公共外围设备的等待时间可能更具确定性。另外,访问逻辑286可以实施公共外围设备的带宽分配。例如,一些组件可以向和自外围设备传送少量数据(例如,字节或字),并且其他组件可以在给定请求中将大量数据(例如,十六个或三十二个字)传送到和自外围设备外部。纯轮叫调度方法可能会使用较小的传输大小来惩罚组件,因此带宽感知调度算法可以更准确地分配带宽。访问逻辑286可以将可用带宽均匀地分配给外围设备,或者带宽分配可以是可编程的。例如,映射到管理功能114地址空间的一个或多个控制寄存器可用于对分配给访问外围设备的每个组件的带宽的分配进行编程。作为一个特定示例,访问逻辑286可以被编程为分配带宽,使得可重配置逻辑区域240A接收75%的带宽,并且可重配置逻辑区域240B接收25%的带宽。
访问逻辑286还可以实施将外围地址空间映射到可配置硬件平台210的不同组件。例如,外围设备的地址空间可以专用于单个组件或者在组件之间共享。作为具体示例,DRAM281的地址空间可以被划分为两个单独的非重叠地址空间,其中可重配置逻辑区域240A可以被分配给第一地址范围,并且可重配置逻辑区域240B可以被分配给第二地址范围。因此,分配给不同可重配置逻辑区域的DRAM存储位置可彼此隔离以维护用户的隐私。作为另一具体示例,DRAM 281的地址空间可以被划分为专用于每个可重配置逻辑区域240A-B的两个单独的非重叠地址空间并且可以由可重配置逻辑区域240A-B共享的附加地址空间。因此,可以存在DRAM 281的私有区域和DRAM 281的共享区域。通过允许公共外围设备的共享存储器空间,与通过物理互连230在加速器之间传输所有数据相比,一个加速器可以潜在地与另一个加速器共享数据。外围地址空间的映射可以由主机逻辑固定,或者可以使用映射到管理功能114地址空间的一个或多个控制寄存器来编程。
邮箱290和看门狗定时器292是可从控制平面或数据平面访问的共享功能。具体地,邮箱290可用于在控制平面和数据平面之间传递消息和其他信息。在一个实施例中,邮箱290可用于在数据平面的不同应用程序功能254A-B之间传递消息和其他信息。邮箱290可以包括缓冲器、控制寄存器(例如信号量)和状态寄存器。通过使用邮箱290作为数据平面和控制平面的不同功能之间的中介,可以潜在地增加数据平面和控制平面的不同功能之间的隔离,这可以增加可配置硬件平台210的安全性。
看门狗定时器292可用于检测硬件和/或软件故障并从中恢复。例如,监视计时器292可以监视执行特定任务所花费的时间量,并且如果时间量超过阈值,则监视计时器292可以发起事件,例如将值写入控制寄存器或引起要断言的中断或复位。作为一个示例,可以在开始第一任务时用第一值初始化看门狗定时器292。看门狗定时器292可以在初始化之后自动倒计时,并且如果看门狗定时器292达到零值,则可以生成事件。或者,如果第一任务在看门狗定时器292达到零值之前结束,则在开始第二任务时可以用第二值重新初始化看门狗定时器292。可以基于分别在第一和第二任务中完成的复杂性或工作量来选择第一和第二值。
应用程序功能254A-B可用于访问数据平面功能,例如应用程序逻辑240A-B。作为一个示例,应用程序功能254A可用于访问应用程序逻辑240A,并且应用程序功能254B可用于访问应用程序逻辑240B。例如,指向应用程序逻辑设计240A-B之一的事务可以使数据被加载、处理和/或返回到服务器计算机220。具体地,可以使用具有在分配给应用程序功能254A-B之一的范围内的地址的事务来访问数据平面功能。例如,可以经由应用程序功能254A将事务从服务器计算机220发送到应用程序逻辑240A。具体地,寻址到应用程序功能254A的事务可以通过外围结构264路由到应用程序逻辑240A。来自应用程序逻辑240A的响应可以通过外围结构264路由到应用程序功能254A,通过互连接口256,然后返回到服务器计算机220。另外,由应用程序逻辑240A-B生成的数据和事务可以使用使用和事务监视层266监视。监视层266可以潜在地识别违反预定义规则的事务或数据,并且可以生成要通过控制平面发送的警报。附加地或替代地,监视层266可以终止由应用程序逻辑240A-B生成的违反监视层266的任何标准的任何事务。另外,监视层266可以分析移入或移出应用程序逻辑240A-B的信息,使得可以从控制平面收集和访问有关信息的统计信息。
互连接口256可以包括仲裁逻辑257,用于跨物理互连230分配应用程序功能254A-B的带宽。具体地,仲裁逻辑257可以选择发送源自应用功能254A-B的队列或事务列表中的哪些事务。作为一个示例,仲裁逻辑257可以选择事务的顺序,使得与每个应用程序功能254A-B相关联的带宽匹配物理互连230的可用带宽的预定义或编程的划分。具体地,仲裁逻辑257可以跟踪每个应用程序功能254A-B通过物理互连230传输的数据量的历史,并且可以选择下一个事务以维持不同应用程序功能254A-B之间的带宽的指定分配。作为另一个例子,仲裁逻辑257可以为每个应用程序功能254A-B分配时隙,并且来自给定应用功能的事务只能在用于相应应用功能的时隙期间发送。因此,来自应用程序功能254A的事务只能在分配给应用程序功能254A的时隙期间发送,来自应用程序功能254B的事务只能在分配给应用程序功能254B的时隙期间发送,等等。
还可以通过编程直接存储器访问(DMA)引擎242在服务器计算机220和应用程序逻辑之间传送数据。DMA引擎242可以包括用于编程或指定从源位置到目的地位置的DMA传输的控制和状态寄存器。作为一个示例,DMA引擎242可以被编程为将存储在服务器计算机220的存储器224内的信息提取到应用程序逻辑240或可配置硬件平台210的公共外围设备中。作为另一个例子,DMA引擎242可以被编程为将由应用程序逻辑240生成的数据推送到服务器计算机220的存储器224。由应用程序逻辑240生成的数据可以从应用程序逻辑240流式传输,或者可以写入公共外围设备,例如存储器281或存储设备282。
应用程序逻辑240A-B可以与其他可配置硬件平台280通信。例如,其他可配置硬件平台280可以通过与SERDES 212通信的一个或多个串行线连接。应用程序逻辑240A-B可以生成到不同的可配置硬件平台280的事务,并且事务可以通过CHP结构244路由到可配置硬件平台280的相应串行线(经由SERDES 212)。类似地,应用程序逻辑240A-B可以使用反向路径从其他可配置硬件平台280接收信息。CHP结构244可以被编程为向不同的可重配置区域240A-B的应用程序逻辑提供不同的访问权限。以这种方式,不同可重配置区域240A-B的应用程序逻辑可以与不同的CHP通信。作为特定示例,可重配置区域240A可以与第一组CHP通信,并且可重配置区域240B可以与第二组CHP通信,第二组CHP与第一组CHP互斥。作为另一示例,可以存在用于不同可重配置区域240A-B的共享CHP和私有CHP。CHP结构244可用于分配在不同可重配置区域240A-B之间共享的CHP的带宽和/或传输大小。
总之,可配置硬件平台210的功能可以分类为控制平面功能和数据平面或应用程序功能。控制平面功能可用于监视和限制数据平面的能力。数据平面功能可用于加速在服务器计算机220上运行的用户应用程序。通过分离控制和数据平面的功能,可以潜在地增加服务器计算机220和其他计算基础设施的安全性和可用性。例如,应用程序逻辑240不能直接向物理互连230发信号,这是因为控制平面的中间层控制物理互连230的事务的格式化和信令。作为另一个例子,可以防止应用程序逻辑240使用可以用于重新配置可配置硬件平台210和/或访问可以是特权的管理信息的专用外围设备。作为另一示例,应用程序逻辑240可以仅通过中间层访问可配置硬件平台210的硬宏,使得使用中间层来控制应用程序逻辑240和硬宏之间的任何交互。
图3是示出系统300的示例的系统图,系统300包括用于管理配置数据的逻辑储存库服务310,该配置数据可用于配置一组计算资源320内的可配置资源。当要执行计算任务时,计算服务提供商可以维护用于服务的用户的计算资源320的机群。计算资源320可以包括具有可配置逻辑资源342的服务器计算机340,可配置逻辑资源342可以被编程为硬件加速器。计算服务提供者可以使用软件服务来管理计算资源320,以管理可配置硬件342的配置和操作。作为一个示例,计算服务提供者可以执行逻辑储存库服务310,用于摄取由用户指定的应用程序逻辑332,生成配置数据336,用于基于用户的逻辑设计配置可配置逻辑平台,以及响应于请求360下载经验证的配置数据362以配置可配置逻辑平台的实例。下载请求360可以来自开发应用程序逻辑332的用户或来自已获得使用应用程序逻辑332的许可的用户。因此,应用程序逻辑332可以由计算服务提供商、用户或者与用户或计算服务提供商分开的第三方创建。例如,可以向计算服务提供商的用户提供加速器知识产权(IP)的市场,并且用户可以通过从市场中选择加速器来潜在地提高其应用程序的速度。
逻辑储存库服务310可以是网络可访问的服务,例如web(网络)服务。web服务通常用于云计算。web服务是通过web或云在网络地址处提供的软件功能。客户端向服务器发起web服务请求,并且服务器处理请求并返回适当的响应。通常使用例如API请求来发起客户端web服务请求。出于简化的目的,下面通常将web服务请求描述为API请求,但是应当理解,可以进行其他web服务请求。API请求是定义的请求-响应消息系统的编程接口,通常以JSON或XML表示,通过web公开-最常见的是通过基于HTTP的web服务器。因此,在某些实现中,API可以被定义为一组超文本传输协议(HTTP)请求消息,以及响应消息的结构的定义,其可以是可扩展标记语言(XML)或JavaScript Object Notation(JSON)格式。API可以指定执行动作的一组函数或例程,包括完成特定任务或允许与软件组件交互。当web服务从客户端设备接收API请求时,web服务可以生成对该请求的响应,并将响应发送到请求中标识的端点。附加地或替代地,web服务可以响应于API请求执行动作,而不生成对请求中标识的端点的响应。
逻辑储存库服务310可以接收API请求330以生成用于可配置硬件平台的配置数据,例如服务器计算机340的可配置硬件342。例如,API请求330可以由开发者或计算服务提供商的合作伙伴用户发出。请求330可以包括用于指定关于逻辑设计、可配置硬件平台、用户信息、访问权限、生产状态的数据和/或元数据的字段,以及用于描述关于逻辑存储器服务310的输入、输出和用户的信息的各种附加字段。作为具体示例,该请求可以包括设计的描述、生产状态(例如试用或生产)、服务的输入或输出的加密状态、对用于存储输入文件的位置的引用(例如硬件设计源代码)、输入文件的类型、可配置硬件的实例类型以及对存储输出文件或报告的位置的引用。特别地,该请求可以包括对硬件设计的引用,该硬件设计指定用于在可配置硬件平台上实现的应用程序逻辑332。具体地,应用程序逻辑332和/或主机逻辑334的规范可以是文件的集合,诸如以硬件描述语言(HDL)编写的源代码,由逻辑综合工具生成的网表,和/或由放置和路由工具生成的放置和路由逻辑门。
计算资源320可以包括按实例类型分类的许多不同类型的硬件和软件。特别地,实例类型指定资源的硬件和软件的至少一部分。例如,硬件资源可以包括具有不同性能级别(例如,不同时钟速度、架构、高速缓存大小等)的中央处理单元(CPU)的服务器,具有和不具有协处理器(诸如图形处理单元(GPU)和可配置逻辑)的服务器,具有不同容量和性能的存储器和/或本地存储装置的服务器,以及具有不同网络性能级别的服务器。示例软件资源可以包括不同的操作系统、应用程序和驱动程序。一个示例实例类型可以包括服务器计算机340,其包括与可配置硬件342通信的中央处理单元(CPU)344。可配置硬件342可以包括可编程逻辑,例如FPGA、可编程逻辑阵列(PLA)、可编程阵列逻辑(PAL)、通用阵列逻辑(GAL)或复杂可编程逻辑器件(CPLD)。作为具体示例,“F1.small”实例类型可以包括具有一个容量单位FPGA资源的第一类服务器计算机,“F1.medium”实例类型可以包括具有两个容量单位FPGA资源的第一类服务器计算机,“F1.large”实例类型可以包括具有八个容量单位的FPGA资源的第一类服务器计算机,并且“F2.large”实例类型可以包括具有八个容量单位的FPGA资源的第二类服务器计算机。可配置硬件342可包括多个可编程逻辑区域,例如区域346和348。
逻辑储存库服务310可以响应于接收API请求330而生成配置数据336。生成的配置数据336可以基于应用程序逻辑332和主机逻辑334。具体地,生成的配置数据336可以包括可用于编程或配置可配置硬件342的信息,以便它执行由应用程序逻辑332和主机逻辑334指定的功能。作为一个示例,计算服务提供者可以生成包括用于在CPU 344和可配置硬件342之间进行接口连接的逻辑的主机逻辑334。具体地,主机逻辑334可以包括用于屏蔽或阻隔应用程序逻辑332不直接与CPU 344通信的逻辑,使得所有CPU应用程序逻辑事务都通过主机逻辑334。因此,主机逻辑334可以潜在地降低可由应用程序逻辑332引入的安全性和可用性风险。
生成配置数据336可以包括对应用程序逻辑332执行检查和/或测试,将应用程序逻辑332集成到主机逻辑334包装器中,合成应用程序逻辑332,和/或放置和路由应用程序逻辑332。检查应用程序逻辑332可以包括验证应用程序逻辑332是否符合计算服务提供者的一个或多个标准。例如,可以分析应用程序逻辑332以确定是否存在接口信号和/或逻辑功能以与主机逻辑334接口。具体地,分析可以包括分析源代码和/或针对验证测试套件运行应用程序逻辑332。验证测试可用于确认应用程序逻辑与主机逻辑兼容。作为另一示例,可以分析应用程序逻辑332以确定应用程序逻辑332是否适合指定实例类型的指定区域(例如,区域346或348)。作为另一示例,可以分析应用程序逻辑332以确定应用程序逻辑332是否包括任何禁止的逻辑功能,例如环形振荡器或其他可能有害的电路。作为另一示例,可以分析应用程序逻辑332以确定应用程序逻辑332是否具有与主机逻辑334的任何命名冲突或者不与主机逻辑334接口的任何无关输出。作为另一示例,应用程序逻辑332可以分析以确定应用程序逻辑332是否尝试与可配置硬件342的受限输入、输出或硬宏接口。如果应用程序逻辑332通过逻辑储存库服务310的检查,则可以生成配置数据336。如果任何检查或测试失败,则可以中止配置数据336的生成。
生成配置数据336可以包括将应用程序逻辑332和主机逻辑334的源代码编译和/或转换为可以用于编程或配置可配置硬件342的数据。例如,逻辑储存库服务310可以将应用程序逻辑332集成到主机逻辑334包装器中。具体地,应用程序逻辑332可以被实例化为包括应用程序逻辑332和主机逻辑334的一个或多个系统设计。例如,第一系统设计可以在对应于区域346的主机逻辑包装中实例化应用程序逻辑332,并且第二系统设计可以在对应于区域348的主机逻辑包装器中实例化应用程序逻辑332。每个集成系统设计可以使用逻辑合成程序来合成,以为系统设计创建一个或多个网表。对于为系统设计指定的实例类型,可以使用放置和路由程序放置和路由每个网表。可以将每个放置和路由设计转换为配置数据336,配置数据336可以用于对可配置硬件342进行编程。例如,配置数据336可以直接从放置和路由程序输出。因此,所生成的配置数据可以包括可以用于利用放置在一个或多个区域(例如区域346和348)中的应用程序逻辑332对可配置硬件342进行编程的数据。
作为一个示例,所生成的配置数据336可以包括用于配置FPGA的全部或部分可配置逻辑的完整或部分比特流。FPGA可以包括可配置逻辑和不可配置逻辑。可配置逻辑可包括可编程逻辑块,其包括组合逻辑和/或查找表(LUT)和顺序逻辑元件(诸如触发器和/或锁存器),可编程路由和时钟资源,可编程分布式和块随机存取存储器(RAM),数字信号处理(DSP)数元截割和可编程输入/输出引脚。可以使用配置逻辑(例如,配置访问端口)将比特流加载到可配置逻辑的片上存储器中。加载在片上存储器内的值可用于控制可配置逻辑,使得可配置逻辑执行由比特流指定的逻辑功能。另外,可配置逻辑可以分成不同的区域(例如区域346和348),这些区域可以彼此独立地配置。作为一个示例,可以使用完整比特流来跨所有区域配置可配置逻辑,并且可以使用部分比特流来仅配置可配置逻辑区域的一部分。作为具体示例,第一部分比特流可用于利用应用程序逻辑332配置区域346,第二部分比特流可用于利用应用程序逻辑332配置区域348,并且第三部分比特流可用于用主机逻辑334配置区域346和348之外的一个或多个区域。不可配置逻辑可以包括在FPGA内执行特定功能的硬宏,例如输入/输出块(例如,串行器和解串器(SERDES))块和千兆位收发器),模数转换器,存储器控制块,测试访问端口和用于将配置数据加载到可配置逻辑上的配置逻辑。
逻辑储存库服务310可以将生成的配置数据336存储在逻辑储存库数据库350中。逻辑储存库数据库350可以存储在可移动或不可移动介质上,包括磁盘、直连存储、网络连接存储(NAS)、存储区域网络(SAN)、独立磁盘冗余阵列(RAID)、磁带或卡带、CD-ROM、DVD或任何其他可用于以非暂时性方式存储信息的介质,这可以由逻辑储存库服务310访问。另外,逻辑储存库服务310可以用于存储输入文件(例如应用程序逻辑332和主机逻辑334的规范)和关于逻辑设计的元数据和/或逻辑储存库服务310的用户。所生成的配置数据336可以由一个或多个属性索引,例如用户标识符、一个或多个实例类型、实例类型的区域、市场标识符、机器图像标识符和可配置的硬件标识符。
逻辑储存库服务310可以接收API请求360以下载配置数据。例如,当计算资源320的用户在计算资源320内启动或部署新实例(例如,F1实例)时,可以生成请求360。作为另一示例,可以响应于来自在操作实例上执行的应用程序的请求生成请求360。请求360可以包括对源和/或目的地实例的引用,对要下载的配置数据的引用(例如,实例类型、实例类型的区域、市场标识符、机器图像标识符或可配置的硬件标识符)、用户标识符、授权令牌和/或用于识别要下载和/或授权访问配置数据的配置数据的其他信息。如果请求配置数据的用户被授权访问配置数据,则可以从逻辑储存库数据库350检索配置数据,并且对应于一个或多个可配置区域的有效配置数据362(例如,完整或部分比特流)可以下载到请求实例(例如,服务器计算机340)。经验证的配置数据362可用于配置目的地实例的可配置逻辑的一个或多个区域。例如,经验证的配置数据362可用于仅配置可配置硬件342的区域346或仅配置区域348。
逻辑储存库服务310可以验证可以将经验证的配置数据362下载到请求实例。验证可以由逻辑储存库服务310在多个不同点处发生。例如,验证可以包括验证应用程序逻辑332与主机逻辑334兼容。具体地,可以在模拟器上执行回归测试套件以验证在将应用程序逻辑332添加到设计之后,主机逻辑334按预期执行。附加地或替代地,可以验证应用程序逻辑332被指定仅驻留在与主机逻辑334的可重配置区域分开的可重配置区域中。作为另一示例,验证可以包括验证经验证的配置数据362是否与要下载的实例类型兼容。作为另一示例,验证可以包括验证请求者被授权访问经验证的配置数据362。如果任何验证检查失败,则逻辑储存库服务310可以拒绝下载经验证的配置数据362的请求。因此,逻辑储存库服务310可以潜在地保护计算资源320的安全性和可用性,同时使用户能够定制计算资源320的硬件。
图4是基于网络的计算服务提供者400的计算系统图,其示出了可以使用本文描述的实施例的一个环境。作为背景,计算服务提供者400(即,云提供者)能够将计算和存储容量作为服务递送到最终接收者社区。在示例实施例中,可以由组织或代表组织为组织建立计算服务提供者。也就是说,计算服务提供商400可以提供“私有云环境”。在另一实施例中,计算服务提供商400支持多租户环境,其中多个客户独立地操作(即,公共云环境)。一般而言,计算服务提供商400可以提供以下模型:基础设施即服务(“IaaS”),平台即服务(“PaaS”)和/或软件即服务(“SaaS”)。可以提供其他型号。对于IaaS模型,计算服务提供商400可以将计算机提供为物理或虚拟机和其他资源。虚拟机可以由监督程序作为访客运行,如下面进一步描述的。PaaS模型提供了一个计算平台,可以包括操作系统、编程语言执行环境、数据库和web服务器。应用程序开发人员可以在计算服务提供商平台上开发和运行他们的软件解决方案,而无需购买和管理底层硬件和软件。此外,应用程序开发人员可以在计算服务提供商平台的可配置硬件上开发和运行其硬件解决方案。SaaS模型允许在计算服务提供商中安装和操作应用程序软件。在一些实施例中,最终用户使用联网的客户端设备访问计算服务提供者400,例如运行web浏览器或其他轻量级客户端应用程序的台式计算机、膝上型计算机、平板电脑、智能手机等。本领域技术人员将认识到,计算服务提供者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还可以包括对可配置硬件映像(CHI)442的引用,其在实例启动时加载在可配置硬件404上。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可用于提供存储空间和对存储在NAS 440上的文件的访问。例如,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分配其自己的硬件层的存储器部分、CPU分配、存储装置、互连带宽等。另外,每个用户分区540可以包括虚拟机和它自己的客户操作系统。这样,每个用户分区540是被设计为独立于其他分区来支持其自己的虚拟机的容量的抽象部分。
管理分区530可用于为用户分区540和可配置硬件平台510执行管理服务。管理分区530可与计算服务提供者的web服务(诸如部署服务、逻辑储存库服务550和健康监视服务)、用户分区540和可配置硬件平台510进行通信。管理服务可以包括用于启动和终止用户分区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。控制平面软件栈可以包括连接到服务器计算机520的一个或多个可配置硬件平台的用于管理可配置区域的可配置逻辑(CL)应用程序管理层532。具体地,CL应用程序管理层532可以跟踪区域(例如区域516A和516B)及其当前状态。例如,状态可以指示该区域是否正在使用中。当接收到将应用程序逻辑设计加载到可配置硬件平台510上的请求时,CL应用程序管理层532可以选择可用于配置有应用程序逻辑设计的区域,并且CL应用程序管理层532可以请求对应于所选区域的配置数据。当终止使用应用程序逻辑设计的实例或拆除应用程序逻辑设计时,CL应用程序管理层532可以将对应于应用程序逻辑设计的区域的状态改变为未使用,以便该区域可以被另一个实例重用或用于不同的应用程序逻辑设计。另外,CL应用程序管理层532可以管理可配置硬件平台510的任何外围设备的地址空间的带宽分配和分配。作为具体示例,带宽和地址空间可以默认为可配置硬件平台510的不同区域之间的带宽和地址空间的均匀划分。
CL应用程序管理层532可用于与web服务(诸如逻辑储存库服务550和健康监视服务)、可配置硬件平台510和用户分区540进行通信。例如,CL应用程序管理层532可以响应于用户分区540被启动而向逻辑储存库服务550发出请求以获取配置数据。CL应用管理层532可以使用硬件522的共享存储器与用户分区540通信,或者通过将服务器计算机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的使用特性。
可配置硬件平台510可包括不可配置的硬宏和可配置逻辑。硬宏可以在可配置硬件平台510内执行特定功能,例如输入/输出块(例如,串行器和解串器(SERDES)块和千兆位收发器)、模数转换器、存储器控制块、测试访问端口和配置端口512。可以通过将配置数据加载到可配置硬件平台510上来编程或配置可配置逻辑。例如,配置端口512可以用于加载配置数据。作为一个示例,配置数据可以存储在配置端口512可访问的存储器(诸如闪存)中,并且配置数据可以在可配置硬件平台510的初始化序列期间(诸如在通电序列期间)自动加载。另外,可以使用片外处理器或可配置硬件平台510内的接口来访问配置端口512。
可配置逻辑可被编程为包括主机逻辑和一个或多个应用程序逻辑设计。主机逻辑可以屏蔽至少一些硬宏的接口与最终用户的接口,使得最终用户具有对硬宏和物理互连的有限访问。例如,主机逻辑可以包括邮箱逻辑511、配置端口512、管理功能513、主机接口514和应用程序功能515。主机逻辑可以封装和屏蔽一个应用程序设计与另一个应用程序设计,以便多个应用程序设计可以同时在可配置硬件平台510上操作。最终用户可以使应用程序逻辑被加载到可配置硬件平台510的可配置区域516A-B之一中。最终用户可以从用户分区540与可配置区域516A-B通信(经由应用程序功能515A-B)。具体地,第一用户分区可以使用应用程序功能515A与可配置区域516A通信,并且第二用户分区可以使用应用程序功能515B与可配置区域516B通信。
主机接口逻辑514可以包括用于在物理互连上发信号并实现通信协议的电路(例如,硬宏和/或可配置逻辑)。通信协议规定了通过互连进行通信的规则和消息格式。另外,主机接口逻辑514可以在应用程序功能515A-B之间分配输出事务的带宽。应用程序功能515A-B可用于与用户分区540A-C的驱动器通信。具体地,每个应用程序功能515A-B可以是在连接到物理互连的设备的枚举期间映射到地址范围的物理或虚拟功能。应用程序驱动程序可以通过将事务处理到分配给给定应用程序功能515A-B的地址范围来与应用程序功能515A-B之一通信。具体地,应用程序功能515A-B可以与应用程序逻辑管理驱动器542通信,以在控制平面上交换命令、请求、响应、消息和数据。每个应用程序功能515A-B可以与应用程序逻辑数据平面驱动器543通信,以在数据平面上交换命令、请求、响应、消息和数据。
邮箱逻辑511可包括一个或多个缓冲器和一个或多个控制寄存器。例如,给定的控制寄存器可以与特定缓冲器相关联,并且寄存器可以用作信号量以在管理分区530和用户分区540之间进行同步。作为具体示例,如果分区可以修改控制寄存器的值,则分区可以写入缓冲区。可以从管理功能513和应用程序功能515A-B访问缓冲器和控制寄存器。当消息被写入缓冲器时,可以写入另一个控制寄存器(例如,消息就绪寄存器)以指示消息已完成。消息就绪寄存器可以由分区轮询以确定是否存在消息,或者可以响应于写入消息就绪寄存器而生成中断并将其发送到分区。
用户分区540可以包括用于将最终用户应用程序540连接到可配置硬件平台510的软件栈。应用程序软件栈可以包括用于与控制平面和数据平面通信的功能。具体地,应用程序软件栈可以包括CL应用程序API 544,用于向最终用户应用程序540提供对可配置硬件平台510的访问。CL应用程序API 544可以包括用于与可配置硬件平台510和管理分区530通信的方法或功能库。例如,最终用户应用程序541可以通过使用C应用程序API 544的API将命令或数据发送到可配置应用程序逻辑516。具体地,CL应用程序API 544的API可以与应用程序逻辑(AL)数据平面驱动器543接口,应用程序逻辑(AL)数据平面驱动器543可以生成针对应用程序功能515A-B之一的事务,该应用程序功能可以与对应的可配置应用程序逻辑516A-B通信。以这种方式,最终用户应用程序541可以使应用程序逻辑接收、处理和/或响应数据以潜在地加速最终用户应用程序541的任务。作为另一个例子,最终用户应用程序541可以通过使用CL应用程序API 544的API向管理分区530发送命令或数据。特别地,CL应用程序API 544的API可以与AL管理驱动器542接口,AL管理驱动器542可以生成以可以与邮箱逻辑511通信的应用程序功能515A-B之一为目标的事务。以这种方式,最终用户应用程序541可以使管理分区530提供关于可配置硬件平台510的操作或元数据和/或请求重新配置可配置应用程序逻辑516A-B。
结合监督程序或内核524的应用程序软件栈可用于限制最终用户应用程序541可通过物理互连执行的操作。例如,计算服务提供者可提供AL管理驱动器542、AL数据平面驱动器543和CL应用程序API 544(例如通过将文件与机器图像相关联)。通过仅允许具有比最终用户更高的特权级别的用户和服务来写入文件,可以保护这些组件免于修改。AL管理驱动器542和AL数据平面驱动器543可以被限制为仅使用相应应用程序功能515A-B的地址范围内的地址。另外,输入/输出存储器管理单元(I/O MMU)可以将互连事务限制在相应的应用程序功能515A-B或管理功能513的地址范围内。作为具体示例,用户分区540A可以是被分配以将应用程序功能515A及其对应的可配置区域用于应用程序逻辑516A。可以分配用户分区540B以将应用程序功能515B及其对应的可配置区域用于应用程序逻辑516B。I/O MMU可以实施访问限制,使得用户分区540A只能写入应用程序功能515A,应用程序功能515A只能写入用户分区540A,用户分区540B只能写入应用程序功能515B,并且应用程序功能515B只能写入用户分区540B。
图6是获取配置数据,使用配置数据配置多租户环境中的可配置硬件的实例,以及使用可配置硬件的实例的示例方法600的序列图。序列图说明了用于配置可配置逻辑的计算服务基础结构的不同元素所使用的一系列步骤。作为一个示例,计算服务提供商的基础设施组件可以包括市场610、客户实例612、控制平面614、可配置硬件平台616和逻辑储存库服务618。市场服务610可以接收由最终用户或由向计算服务提供商的最终用户提供或销售其加速器的独立硬件开发者创建的硬件加速器的配置数据。市场服务610可以提供可用于购买或许可的加速器列表,以便最终用户可以找到适合其需要的硬件加速器。客户实例612可以是服务器计算机及其相关联软件,其响应于最终用户部署计算服务提供商的资源而启动。客户实例可以包括控制平面软件614,其可以用于管理可配置硬件平台616的配置。可配置硬件平台616可以包括可重配置逻辑和主机逻辑,如上所述。逻辑储存库服务618可以包括配置数据的储存库,其可以由例如产品代码、机器实例标识符和/或可配置的硬件标识符来索引。逻辑储存库服务618可以使用索引之一接收对配置数据的请求,并且可以将配置数据返回到控制平面。
计算服务提供商基础设施的组件可以在客户实例612的部署和使用期间的各个阶段使用。例如,阶段可以包括配置数据获取阶段620、应用程序逻辑配置阶段630、以及应用程序阶段640。
配置数据获取阶段620可以包括识别应用程序逻辑设计和用于放置应用程序逻辑的可重配置区域。可以从逻辑储存库服务618获取应用程序逻辑的配置数据并且对应于可重配置区域。具体地,计算服务的最终用户可以使用市场服务610订阅和启动622机器实例。市场服务610可以使机器映像加载624在服务器计算机上,以便可以初始化客户实例612。机器映像可以包括由最终用户编写和/或由计算服务提供商提供的控制平面软件使用的应用程序软件。在为客户引导虚拟机实例的同时,可以将用于应用程序逻辑的请求626发送到控制平面614。控制平面614可以将应用程序逻辑映射到可配置硬件平台616的特定未使用区或区域。通过使控制平面614选择可重配置区域,可以从客户实例612抽象出选择区域的细节。然后,控制平面614可以发送请求以从逻辑储存库服务618获取628对应于应用程序逻辑和可重配置区域的配置数据。逻辑储存库服务618可以用配置数据回复629。因此,614处的控制平面软件可以接收对应于应用程序逻辑的配置数据的副本,使得可以将应用程序逻辑加载到可配置硬件平台上以配置可配置硬件平台的所选区域。
配置阶段630可以包括将配置数据加载到可配置硬件平台616上。配置阶段630可以包括清理632可配置硬件平台。例如,清理632可配置硬件平台可以包括写入与可配置硬件平台和/或内部存储器(例如,块RAM)通信的任何外部存储器(例如,公共外围设备),使得先前客户的数据不可由现在的客户观察到。清理632存储器可以包括写入全零,写入全一,和/或将随机图案写入存储器的存储位置。另外,可以完全或部分地擦除可配置硬件平台616的可配置逻辑存储器。在清理可配置硬件平台616之后,可以将可配置硬件平台616上加载的主机逻辑版本634返回634到控制平面614。主机逻辑版本可用于验证635应用程序逻辑是否与加载在可配置硬件平台616上的主机逻辑兼容。如果主机逻辑和应用程序逻辑不兼容,则配置阶段630可以中止(未示出)。或者,如果主机逻辑和应用程序逻辑兼容,则配置阶段630可以在636继续。可以将应用程序逻辑从控制平面614复制到可配置硬件平台616,使得可以将应用程序逻辑加载636到可配置硬件平台616的所选区域。在加载636之后,可配置硬件平台616可以指示637加载在可配置硬件平台616上的功能(例如,应用程序逻辑)准备就绪。控制平面614可以向客户实例612指示638应用程序逻辑被初始化并准备好使用。
应用程序阶段640可以在初始化应用程序逻辑之后开始。应用阶段640可以包括在客户实例612上执行应用程序软件并在可配置硬件平台616上执行应用程序逻辑。具体地,客户实例612的应用程序软件可以与可配置硬件平台616的应用程序逻辑的通信642。例如,应用程序软件可以使数据被传送到应用程序逻辑,数据可以由应用程序逻辑处理,并且处理的后数据和/或状态信息可以返回到应用程序软件。与仅使用通用计算机上的软件相比,应用程序逻辑可以包括可以潜在地加速处理速度的专用或定制硬件。应用程序逻辑可以在客户实例612的持续时间内执行相同的功能,或者可以在客户实例612执行的同时调整或重新配置应用程序逻辑。例如,在客户实例612上执行的应用程序软件可以请求将不同的应用程序逻辑加载到可配置硬件平台616上。具体地,应用程序软件可以向可配置硬件平台616发出请求644,可以将请求转发646到控制平面614。控制平面614可以从逻辑储存库服务618开始在628处获取新的应用程序逻辑。当新的应用程序逻辑被加载到正在运行的客户实例上时,可以省略清理632步骤,因为客户不是改变客户实例612。
另外,可以使用拆除阶段(未示出)来清除或清理可配置硬件平台616,以便进一步保护客户数据。例如,可以擦除可配置硬件平台616的内部和/或外部存储器和/或当客户停止使用客户实例612时,可以擦除与应用程序逻辑相关联的配置逻辑存储器作为拆除序列的一部分。具体地,内部存储器、外部存储器和/或配置逻辑存储器可以用全零、全一、随机值和/或预定义值重写。例如,配置逻辑存储器可以用将可重配置逻辑配置为处于低功率状态的值配置。
图7是使用可配置硬件平台的示例方法700的流程图。在710处,可以在可重配置逻辑的第一区域上加载主机逻辑,使得可配置硬件平台执行主机逻辑的操作。主机逻辑可以包括用于对来自主机接口的事务实施受限访问的控制平面功能。例如,控制平面功能可以拒绝在分配给控制平面功能的地址范围之外的事务。另外,主机逻辑可以包括用于限制或节制应用程序逻辑使用可配置硬件平台的硬宏并访问到主机设备的物理接口的逻辑。因此,主机逻辑可以封装应用程序逻辑,以便由主机逻辑管理到硬宏和计算基础设施的其他组件的接口。
可以一次加载主机逻辑或递增地加载主机逻辑。例如,主机逻辑可以包括在可配置硬件平台的重置信号解除时加载的静态逻辑。作为具体示例,对应于静态逻辑的配置数据可以存储在可配置硬件平台的闪存中,并且闪存的内容可以用于利用静态主机逻辑对可配置硬件平台进行编程。在一个实施例中,可以在没有主计算机(例如,客户实例)干预的情况下加载静态逻辑。附加地或替代地,主机逻辑可以包括在加载静态逻辑之后加载的可重配置逻辑。例如,可以在静态主机逻辑运行的同时添加可重配置的主机逻辑。特别地,可以在接收到请求加载可重配置主机逻辑的事务时加载可重配置主机逻辑。例如,可以通过将可配置硬件平台连接到主计算机的物理互连从主计算机传输事务。
通过将主机逻辑划分为静态逻辑组件和可重配置逻辑组件,可以将主机逻辑递增地加载到可配置硬件平台上。例如,静态逻辑可以包括主机逻辑的基本功能,例如通信接口、枚举逻辑和配置管理逻辑。通过在静态逻辑中提供通信接口,可以在计算系统通电和/或重置时在物理互连上发现或枚举可配置硬件平台。可重配置逻辑可用于向主机逻辑提供更新并向主机逻辑提供更高级别的功能。例如,某些互连技术对枚举附连到互连的设备有时间限制。将主机逻辑加载到可配置硬件平台上的时间可以包括在为枚举分配的时间预算中,因此可以调整初始主机逻辑的大小以便相对快速地加载。因此,静态逻辑可以是主机逻辑功能的子集,使得可配置硬件平台可以在互连技术指定的时间限制内操作。可重配置逻辑可以在枚举或引导启动序列完成之后提供要添加的附加主机逻辑功能。作为一个示例,在加载静态逻辑之后,可以将与数据平面相关联的主机逻辑(诸如DMA引擎、CHP结构、外围结构或公共外围设备接口)加载为可重配置逻辑。
在720处,响应于在主机接口处接收第一事务,可以在可重配置逻辑的第二区域上加载第一应用程序逻辑设计。可重配置逻辑的第二区域可以与可重配置逻辑的第一区域不重叠,从而不修改主机逻辑。另外,可重配置逻辑的第二区域可以具有到静态主机逻辑的接口。主机逻辑可以分析第一事务以确保第一事务在加载第一应用程序逻辑设计之前满足控制平面功能的访问标准。如果满足控制平面的访问标准,则可以加载第一应用程序逻辑设计。例如,第一事务可以通过在给定的地址范围内具有地址,或者通过包括授权令牌来满足访问标准。例如,第一事务可以包括与主机逻辑的控制寄存器相对应的地址,以启动加载应用程序逻辑。作为另一示例,主机逻辑可以验证授权令牌以确定请求是否被授权。
在730处,响应于在主机接口处接收第二事务,可以在可重配置逻辑的第三区域上加载第二应用程序逻辑设计。可重配置逻辑的第三区域可以与可重配置逻辑的第一和第二区域不重叠,从而不修改主机逻辑和第一应用程序逻辑设计。另外,可重配置逻辑的第三区域可以具有到静态主机逻辑的接口。第二和第三区域可以彼此隔离,使得在第二和第三区域之间没有直接的通信路径。类似于第一事务,主机逻辑可以分析第二事务以确保在加载第二应用程序逻辑设计之前第二事务满足控制平面功能的访问标准。
在740处,主机逻辑可用于在第一应用程序逻辑设计和第二应用程序逻辑设计中的每一个的资源之间进行仲裁。作为一个示例,当从主机接口发送信息时,主机逻辑可用于控制第一应用程序逻辑设计和第二应用程序逻辑设计中的每一个所使用的带宽量。例如,主机逻辑可以包括主机接口和每个应用程序逻辑设计之间的格式化和控制层。特别地,格式化和控制层可以包括用于从每个应用程序逻辑设计接收数据的流传输接口。可以对流传输的数据进行分区(例如,打包)和格式化,以便可以从主机接口传输数据。格式化和控制层可以将流传输数据划分为不同大小的块,以便可以管理主机接口的等待时间和带宽使用。例如,格式化和控制层可以跟踪源自每个应用程序逻辑设计的主机接口传输的数据量,并且格式化和控制层可以在不同的应用程序逻辑设计之间进行仲裁,以便可以在不同的应用程序逻辑设计之间分配带宽。作为具体示例,可以在不同的应用程序逻辑设计之间平均分配带宽。作为另一示例,可以使用可从主机逻辑的控制平面功能访问的控制寄存器来指定带宽的分配。可以基于原始带宽(例如,包括用于发送事务的控制信息的带宽)或仅考虑所发送的数据的有效带宽来分配带宽。通过在主机接口和应用程序逻辑设计之间插入格式化和转换层,可以潜在地增加主计算机的安全性和可用性,因为可以限制应用程序逻辑设计直接创建事务和/或查看物理互连或不同的应用程序逻辑设计的事务。因此,格式化和转换层的使用可以保护在物理互连上发生的事务的完整性和隐私。
作为另一示例,主机逻辑可用于控制第一应用程序逻辑设计和第二应用程序逻辑设计中的每一个所使用的内部或外部资源的量。作为特定示例,主机逻辑可用于控制每个应用程序逻辑设计所使用的能量或功率量。特别地,可配置硬件平台可以具有可以在不同应用程序逻辑设计之间划分的有限功率预算。主机逻辑可以基于设计的大小(例如,门计数)和设计的一个或多个时钟的频率来估计每个应用程序设计的能量消耗。或者,当每个应用程序逻辑设计被加载到可配置硬件平台上时,可以将估计的能量消耗加载到主机逻辑的控制寄存器中。主机逻辑可用于控制每个应用程序逻辑设计所消耗的能量,使得应用程序逻辑设计符合可配置硬件平台的功率预算。控制应用程序逻辑设计所消耗的能量可以包括选通或改变应用程序逻辑设计的一个或多个时钟的频率,以及选通功率或改变应用程序逻辑设计的全部或一部分的电压。
在750处,主机逻辑可以用作共享外围设备与第一应用程序逻辑设计和第二应用程序逻辑设计之间的接口。如上所述,共享外围设备可以包括存储器、存储设备和/或其他可配置硬件平台。该接口可以格式化共享外围设备和应用程序逻辑设计之间的所有传输,这样应用程序逻辑设计就不会受到传输协议的低级细节的影响,因此共享外围设备不会被滥用(例如导致故障或访问特权信息)。主机逻辑可以在共享外围设备与第一应用程序逻辑设计和第二应用程序逻辑设计之间分配数据传输的带宽。例如,可以基于固定分配(例如,相等加权)或编程分配来分配带宽。主机逻辑可以在共享外围设备与第一应用程序逻辑设计和第二应用程序逻辑设计之间实施数据传输的大小。作为一个示例,可以通过减小数据传输的大小来减少传输的等待时间。作为另一个例子,可以通过增加数据传输的大小来增加有效带宽或利用率。
共享外围设备可以包括多个功能、寄存器和/或存储位置,其由分配给共享外围设备的地址范围内的不同相应地址索引。可以在不同的应用程序逻辑设计之间划分不同的功能、寄存器和/或存储位置,使得每个应用程序逻辑设计可以具有对共享外围设备的不同部分的独占访问。例如,共享外围设备的地址可以分成多个地址范围,并且每个应用程序逻辑设计可以被授予对不同地址范围的访问权。特别地,主机逻辑可以限制从第一应用程序逻辑设计到共享外围设备的第一范围地址的访问,并且可以限制从第二应用程序逻辑设计到共享外围设备的第二范围地址的访问。替代地或另外地,共享外围设备可以具有共享功能、寄存器和/或存储位置。因此,可以授权每个应用程序逻辑设计访问共享外围设备的私有部分(可使用一个地址范围访问)和共享部分(可使用不同地址范围访问)。
主机逻辑还可用于分析应用程序逻辑设计的事务。例如,主机逻辑可以跟踪应用程序逻辑设计和/或主机逻辑的操作特性,例如带宽、等待时间和其他性能特性。作为另一示例,主机逻辑可以分析事务以确定事务是否符合预定标准。如果事务不符合标准,则主机逻辑可以潜在地取消源自应用程序逻辑设计的事务。
图8是示出服务器计算机800的示例的系统图,该服务器计算机800包括服务器硬件810和集成电路820,其具有在集成电路820上配置的多个客户逻辑设计830A-C。服务器硬件810可以包括CPU、内存、连接器、接口、电源、风扇和各种其他硬件组件。集成电路820可以包括可重配置的逻辑,其可以被编程或配置为执行计算任务。例如,集成电路820可以是FPGA、CPLD或其他可编程硬件设备。集成电路820可以使用互连840连接到服务器硬件810,互连840在服务器硬件810和集成电路820之间提供低延迟通信路径。例如,集成电路820和服务器硬件810可以通过使用诸如PCI、PCI-Express或其他总线或串行互连协议的通信协议通过互连发送信号来进行通信。作为一个示例,服务器硬件810和集成电路820可以连接到服务器计算机800的主板。作为另一个例子,集成电路820可以安装在插入服务器的扩展槽中的扩展卡上。通过使用低延迟互连将服务器硬件810和集成电路820紧密耦合,集成电路820可以用作在服务器硬件810上执行的许多计算密集型应用程序的硬件加速器。相比之下,由于服务器硬件和硬件加速器之间的通信开销,通过较高延迟互连(例如以太网或互联网协议(IP)网络)连接的硬件加速器可以提供更少的加速应用程序的机会。
集成电路820可包括主机逻辑850和多个客户逻辑设计830A-C。主机逻辑850可以是由计算服务提供商部署的逻辑,以实施一定级别的设备可管理性和安全性。主机逻辑850可以包括静态逻辑和可重配置逻辑。例如,静态逻辑可以在引导时从板载闪存设备加载。可以在引导时间之后(例如,在运行时)使用内部或外部闪存设备和专用微控制器加载主机可重配置逻辑,或者通过互连840上的服务器硬件810加载主机可重配置逻辑。可以使用主机逻辑850保护服务器计算机800免受客户逻辑设计830A-C发起的攻击。具体地,主机逻辑850通过拥有或控制到互连840的接口来封装或沙箱化客户逻辑设计830A-C。作为具体示例,互连840可以是PCI-Express并且主机逻辑850可以保护服务器计算机800免受PCI-Express级攻击,因为主机逻辑850拥有集成电路820的PCI-Express接口并且控制PCI-Express地址和PCI-Express总线、设备、功能和替代路由标识符。
主机逻辑850可以包括仲裁逻辑860,其可以用于在不同的客户逻辑设计830A-C之间分配资源(诸如互连840上的带宽)。例如,每个客户逻辑设计830A-C可以由不同的客户操作。计算服务提供商可以使用主机逻辑850将客户逻辑设计830A-C加载到集成电路820的不同的相应可重配置逻辑区域上。仲裁逻辑860可以通过在不同时间向不同的客户提供对互连840的访问来向每个客户提供一致的服务质量。具体地,可以以轮叫调度或其他调度顺序向每个客户授予对互连840的访问权。仲裁逻辑860可以将提供给每个客户逻辑设计830A-C的带宽限制为指定的带宽量。例如,如果集成电路820包括用于客户逻辑设计的四个不同的可重配置逻辑区域,则仲裁逻辑860可以将提供给每个客户逻辑设计的带宽限制为互连840的可用带宽的四分之一。以这种方式,客户不能相互干扰,例如通过耗尽所有可用带宽,并且客户不能直接或间接地观察其他客户是否正在集成电路820上执行客户逻辑设计。例如,客户不能可靠地使用集成电路820和服务器计算机810之间的延迟或带宽,以观察其他客户是否正在集成电路820上执行客户逻辑设计。
图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的指令,该软件980实现这里所述的一个或多个创新。
输入设备950可以是触摸输入设备(例如,键盘、鼠标、笔或轨迹球)、声音输入设备、扫描设备或将输入提供给计算环境900的其他设备。输出设备960可以是显示器、打印机、扬声器、CD刻录机或从计算环境900提供输出的其他设备。
通信连接970能够通过通信介质与另一计算实体进行通信。通信介质传送调制的数据信号中的信息,例如计算机可执行指令、音频或视频输入或输出或其他数据。调制的数据信号是以对信号中的信息进行编码的方式来使其特征中的一个或多个特征被设置或被改变了的信号。作为示例而非限制,通信介质可以使用电、光、RF或其他载体。
尽管为了方便呈现,以特定的顺序次序说明了所公开的一些方法的操作,但是应理解,该说明方式涵盖重新布置,除非下面阐述的特定语言要求特定的排序。例如,在一些情况下,顺序说明的操作可以重新布置或同时执行。此外,为了简单起见,附图可能未示意所公开的方法可以与其他方法结合使用的各种方式。
所公开的任何方法可以实现为存储在一个或多个计算机可读存储介质(例如,一个或多个光介质盘、易失性存储组件(例如,DRAM或SRAM)或非易失性存储组件(例如,闪存或硬盘驱动器))上且在计算机(例如,任何商用计算机,其包括:智能手机或具有计算硬件的其他移动设备)上执行的计算机可执行指令。术语计算机可读存储介质不包括通信连接,例如信号和载波。用于实现公开的技术的任何计算机可执行指令以及在实现公开的示例的期间创建和使用的任何数据可以存储在一个或多个计算机可读存储介质上。计算机可执行指令例如可以是专用软件应用或经由web浏览器或其他软件应用(例如,远程计算应用)可访问或可下载的软件应用的一部分。该软件例如可以在单个本地计算机(例如,任何合适的商用计算机)上或在使用一个或多个网络计算机的网络环境(例如,经由因特网、广域网、局域网、客户端服务器网络(例如云计算网络)、或其他类似网络)中执行。
为了清楚起见,仅说明了基于软件的实现方式的某些选定方面。省略了本领域公知的其他细节。例如,应理解,公开的技术不限于任何特定计算机语言或程序。例如,公开的技术可以通过以C++、Java、Perl、JavaScript、Adobe Flash或任何其他合适的编程语言编写的软件来实现。同样,公开的技术不限于任何特殊的计算机或硬件类型。合适的计算机和硬件的某些细节是公知的,并且不需要在本发明中详细阐述。
也应很好理解,这里所述的任何功能可以至少部分地由一个或多个硬件逻辑组件而不是软件来执行。例如但是不限于,可以使用的硬件逻辑组件的说明性的类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。
此外,可以通过合适的通信方式上传、下载或远程访问任何基于软件的示例(例如,包括用于使计算机执行所公开的任何方法的计算机可执行指令)。该合适的通信方式例如包括因特网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信或其他类似通信方式。
可以根据以下条款说明本发明的各种实施例:
1.一种可配置逻辑平台,包括:
用于将所述可配置逻辑平台连接到处理器的物理互连;
第一可重配置逻辑区域,包括基于对应于所述第一可重配置逻辑区域的配置数据配置的逻辑块;
第二可重配置逻辑区域,包括基于对应于第二可重配置逻辑区域的配置数据配置的逻辑块;
配置端口,用于将配置数据应用于所述第一可重配置逻辑区域和所述第二可重配置逻辑区域,使得基于与所述第一可重配置逻辑区域相对应的配置数据配置所述第一可重配置逻辑区域,并且基于与所述第二可重配置逻辑区域相对应的配置数据配置所述第二可重配置逻辑区域;
控制平面功能,能够通过所述物理互连的事务访问,所述控制平面功能与所述配置端口通信,所述控制平面功能提供从所述物理互连到所述配置端口的受限访问;
第一数据平面功能,能够通过所述物理互连的事务访问,所述第一数据平面功能提供到所述第一可重配置逻辑区域的接口,该接口允许通过所述物理互连传输信息并防止所述第一可重配置逻辑区域直接访问所述物理互连;
第二数据平面功能,能够通过所述物理互连的事务访问,所述第二数据平面功能提供到所述第二可重配置逻辑区域的接口,该接口允许通过所述物理互连传输信息并防止所述第二可重配置逻辑区域直接访问所述物理互连;以及
仲裁逻辑,被配置为在至少所述第一数据平面功能和所述第二数据平面功能之间分配所述物理互连的带宽。
2.根据条款1所述的可配置逻辑平台,其中使用包括第一地址范围内的地址的事务来访问所述第一数据平面功能,使用包括第二地址范围内的地址的事务来访问所述第二数据平面功能,使用包括第三地址范围内的地址的事务来访问所述控制平面功能,并且所述第一地址范围、第二地址范围和第三地址范围都是非重叠的。
3.根据前述任一条款所述的可配置逻辑平台,还包括:
公共外围设备接口,被配置为提供所述第一可重配置逻辑区域和公共外围设备之间的第一通信路径以及所述第二可重配置逻辑区域和公共外围设备之间的第二通信路径。
4.条款的可配置逻辑平台Error!未找到参考源,其中所述公共外围设备接口被配置为限制所述第一可重配置逻辑区域对第一地址范围内的所述公共外围设备的地址的访问,并且所述公共外围设备接口被配置为限制所述第二可重配置逻辑区域对第二地址范围内的所述公共外围设备的地址的访问。
5.条款的可配置逻辑平台Error!未找到参考源,或4,其中所述公共外围设备接口被配置为将所述第一可重配置逻辑区域限制为用于所述公共外围设备和所述第一可重配置逻辑区域之间的传输的第一带宽量,并且所述公共外围设备接口被配置为将所述第二可重配置逻辑区域限制为用于所述公共外围设备和所述第二可重配置逻辑区域之间的传输的第二带宽量。
6.一种装置,包括:
多个可重配置逻辑区域,每个可重配置逻辑区域包括可配置硬件以实现相应的应用程序逻辑设计;以及
用于分别封装每个可重配置逻辑区域的主机逻辑,所述主机逻辑包括:
用于与处理器通信的主机接口;以及
能够通过所述主机接口访问的多个数据路径功能,每个数据路径功能包括用于格式化所述主机接口和相应的可重配置逻辑区域的应用程序逻辑设计之间的数据传输的层,并且其中所述主机接口被配置为在相应可重配置逻辑区域的应用程序逻辑设计的资源之间进行仲裁。
7.根据条款6所述的装置,其中所述主机逻辑还包括:
能够通过所述主机接口访问的管理功能,所述管理功能适于使多个可重配置逻辑区域中的一可重配置逻辑区域响应于在所述主机接口处接收的授权事务而配置有特定应用程序逻辑设计。
8.根据条款6或7所述的装置,其中所述主机接口还被配置为实施相应可重配置逻辑区域的应用程序逻辑的最大传输大小。
9.根据条款6-8中任一项所述的装置,其中对于每个相应功能,可以使用不同的非重叠地址范围来访问管理功能和每个数据路径功能。
10.根据条款6-9中任一项所述的装置,其中所述主机接口基于主机逻辑的控制寄存器的编程值来分配由相应可重配置逻辑区域的应用程序逻辑生成的数据传输的带宽。
11.根据条款6-10中任一项所述的装置,其中主机逻辑的至少一部分是可重配置逻辑,其响应于在所述主机接口处接收的授权事务而加载在所述装置上。
12.根据条款6-11中任一项所述的装置,其中所述主机逻辑还包括在相应可重配置逻辑区域的应用程序逻辑和公共外围设备之间的转换层,所述转换层适于格式化应用程序逻辑和逻辑公共外围设备之间的数据传输。
13.根据条款6-12中任一项所述的装置,其中所述主机逻辑还包括用于在不同的可重配置逻辑区域的应用程序逻辑与公共外围设备之间分配数据传输的带宽的逻辑。
14.根据条款6-13中任一项所述的装置,其中所述主机逻辑还包括用于实施从不同可重配置逻辑区域的应用程序逻辑到公共外围设备的访问限制的逻辑。
15.一种用于操作包括可重配置逻辑的可配置硬件平台的方法,所述方法包括:
在所述可重配置逻辑的第一区域上加载主机逻辑,使得所述可配置硬件平台执行所述主机逻辑的操作,所述主机逻辑包括主机接口和实施对来自所述主机接口的事务进行受限访问的控制平面功能;
响应于在所述主机接口处接收到第一事务,在所述可重配置逻辑的第二区域上加载第一应用程序逻辑设计,所述第一事务满足所述控制平面功能的访问标准;
响应于在所述主机接口处接收第二事务,在所述可重配置逻辑的第三区域上加载第二应用程序逻辑设计,所述第二事务满足所述控制平面功能的访问标准;以及
当从所述主机接口发送信息时,使用所述主机逻辑在所述第一应用程序逻辑设计和所述第二应用程序逻辑设计中的每一个使用的资源之间进行仲裁。
16.根据条款15所述的方法,还包括:
使用所述主机逻辑作为共享外围设备与所述第一应用程序逻辑设计和所述第二应用程序逻辑设计之间的接口。
17.根据条款11所述的方法,还包括:
使用所述主机逻辑来分配所述共享外围设备与所述第一应用程序逻辑设计和所述第二应用程序逻辑设计之间的数据传输带宽。
18.根据条款11或17所述的方法,还包括:
使用所述主机逻辑来实施所述共享外围设备与所述第一应用程序逻辑设计和所述第二应用程序逻辑设计之间的数据传输的大小。
19.根据条款16-18中任一项的方法,还包括:
使用主机逻辑来限制从第一应用程序逻辑设计到共享外围设备的第一范围地址的访问,并限制从第二应用程序逻辑设计到共享外围设备的第二范围地址的访问。
20.根据条款14所述的方法,还包括:
响应于拆除所述第一应用程序逻辑设计或所述第二应用程序逻辑设计,清除内部存储器、外部存储器或配置存储器中的一个或多个。
所公开的方法、装置和系统不应被理解为以任何方式进行限制。相反,本发明针对以单独方式和以彼此之间各种组合和次组合方式公开的各种实施例的所有新颖和非显而易见的特征和方面。所公开的方法、装置和系统不限于任何特定的方面或特征或它们的组合,所公开的实施例也不要求存在任何一个或多个特定优势或解决任何一个或多个特定问题。
鉴于可以应用所公开的发明原理的许多可能的实施例,应认识到,所述的实施例仅是优选示例,且不应被视为将权利要求的范围限制于这些优选示例。相反,权利要求主张的主题的范围由随附的权利要求限定。因此,申请人主张该权利要求范围内的所有发明都作为申请人的发明。

Claims (15)

1.一种装置,包括:
多个可重配置逻辑区域,包括第一可重配置逻辑区域和第二可重配置逻辑区域,每个可重配置逻辑区域包括可配置硬件以实现相应的应用程序逻辑设计;以及
用于分别封装每个可重配置逻辑区域的主机逻辑,所述主机逻辑包括:
用于通过物理互连与处理器通信的主机接口;以及
能够通过所述主机接口访问的多个数据路径功能,包括第一数据路径功能和第二数据路径功能,每个数据路径功能包括用于格式化所述主机接口和相应的可重配置逻辑区域的应用程序逻辑设计之间的数据传输的层,并且其中所述主机接口被配置为在相应可重配置逻辑区域的应用程序逻辑设计的资源之间进行仲裁,
其特征在于所述第一数据路径功能位于所述主机接口和所述第一可重配置逻辑区域之间,并且所述第二数据路径功能位于所述主机接口和所述第二可重配置逻辑区域之间;
所述第一数据路径功能被分配第一范围的地址并且所述第二数据路径功能被分配不同于所述第一范围的第二范围的地址;
所述第一数据路径功能和所述第二数据路径功能中的每个从相应的所述第一可重配置逻辑区域和所述第二可重配置逻辑区域接收信息,并且格式化所接收的信息以传送到所述主机接口,包括生成控制信息;以及
所述第一数据路径功能和所述第二数据路径功能阻止所述第一可重配置逻辑区域和所述第二可重配置逻辑区域格式化事务并且直接控制用于驱动被耦合到所述主机接口的物理互连的信号。
2.根据权利要求1所述的装置,其中所述主机逻辑还包括:
能够通过所述主机接口访问的管理功能,所述管理功能适于使多个可重配置逻辑区域中的一可重配置逻辑区域响应于在所述主机接口处接收的授权事务而配置有特定应用程序逻辑设计。
3.根据任一项前述权利要求所述的装置,其中所述主机接口还被配置为实施最大规模的事务。
4.根据权利要求1所述的装置,其中对于每个相应功能,可以使用不同的非重叠地址范围来访问管理功能和每个数据路径功能。
5.根据权利要求1所述的装置,其中所述主机接口基于主机逻辑的控制寄存器的编程值来分配由相应可重配置逻辑区域的应用程序逻辑生成的数据传输的带宽。
6.根据权利要求1所述的装置,其中主机逻辑的至少一部分是可重配置逻辑,其响应于在所述主机接口处接收的授权事务而加载在所述装置上。
7.根据权利要求1所述的装置,其中所述主机逻辑还包括在相应可重配置逻辑区域的应用程序逻辑和公共外围设备之间的转换层,所述转换层适于格式化应用程序逻辑和逻辑公共外围设备之间的数据传输。
8.根据权利要求7所述的装置,其中所述主机逻辑还包括用于在不同的可重配置逻辑区域的应用程序逻辑与公共外围设备之间分配数据传输的带宽的逻辑。
9.根据权利要求7或8所述的装置,其中所述主机逻辑还包括用于实施从不同可重配置逻辑区域的应用程序逻辑到公共外围设备的访问限制的逻辑。
10.一种用于操作包括可重配置逻辑的可配置硬件平台的方法,所述方法包括:
在所述可重配置逻辑的第一区域上加载主机逻辑,使得所述可配置硬件平台执行所述主机逻辑的操作,所述主机逻辑包括主机接口和实施对来自所述主机接口的事务进行受限访问的控制平面功能;
响应于在所述主机接口处接收到第一事务,在所述可重配置逻辑的第二区域上加载第一应用程序逻辑设计,所述第一事务满足所述控制平面功能的访问标准;
响应于在所述主机接口处接收第二事务,在所述可重配置逻辑的第三区域上加载第二应用程序逻辑设计,所述第二事务满足所述控制平面功能的访问标准;以及
使用所述主机逻辑在所述第一应用程序逻辑设计和所述第二应用程序逻辑设计中的每一个使用的资源之间进行仲裁,
其特征在于所述主机逻辑包括位于所述主机接口与所述可重配置逻辑的所述第二区域之间的第一数据路径功能和位于所述主机接口与所述可重配置逻辑的所述第三区域之间的第二数据路径功能;
所述第一数据路径功能被分配第一范围的地址并且所述第二数据路径功能被分配不同于所述第一范围的第二范围的地址;
所述第一数据路径功能和所述第二数据路径功能中的每个从所述可重配置逻辑的相应的所述第二区域和所述第三区域接收信息,并且格式化所接收的信息以传输到区域主机接口;以及
所述第一数据路径功能和所述第二数据路径功能阻止所述可重配置逻辑的所述第二区域和所述第三区域格式化事务并且直接控制用于驱动被耦合到所述主机接口的物理互连的信号。
11.根据权利要求10所述的方法,还包括:
使用所述主机逻辑作为共享外围设备与所述第一应用程序逻辑设计和所述第二应用程序逻辑设计之间的接口。
12.根据权利要求11所述的方法,还包括:
使用所述主机逻辑来分配所述共享外围设备与所述第一应用程序逻辑设计和所述第二应用程序逻辑设计之间的数据传输带宽。
13.根据权利要求11或12所述的方法,还包括:
使用所述主机逻辑来实施所述共享外围设备与所述第一应用程序逻辑设计和所述第二应用程序逻辑设计之间的数据传输的大小。
14.根据权利要求11或12所述的方法,还包括:
使用主机逻辑来限制从第一应用程序逻辑设计到所述共享外围设备的所述第一范围地址的访问,并限制从第二应用程序逻辑设计到所述共享外围设备的所述第二范围地址的访问。
15.根据权利要求14所述的方法,还包括:
响应于拆除所述第一应用程序逻辑设计或所述第二应用程序逻辑设计,清除内部存储器、外部存储器或配置存储器中的一个或多个。
CN201780060351.3A 2016-09-29 2017-09-28 具有多个可重配置区域的可配置逻辑平台 Active CN109791508B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/280,624 US10282330B2 (en) 2016-09-29 2016-09-29 Configurable logic platform with multiple reconfigurable regions
US15/280,624 2016-09-29
PCT/US2017/054179 WO2018064418A1 (en) 2016-09-29 2017-09-28 Configurable logic platform with multiple reconfigurable regions

Publications (2)

Publication Number Publication Date
CN109791508A CN109791508A (zh) 2019-05-21
CN109791508B true CN109791508B (zh) 2023-10-17

Family

ID=60183104

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780060351.3A Active CN109791508B (zh) 2016-09-29 2017-09-28 具有多个可重配置区域的可配置逻辑平台

Country Status (5)

Country Link
US (3) US10282330B2 (zh)
EP (1) EP3519961B1 (zh)
JP (1) JP6886013B2 (zh)
CN (1) CN109791508B (zh)
WO (1) WO2018064418A1 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
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
US10795742B1 (en) 2016-09-28 2020-10-06 Amazon Technologies, Inc. Isolating unresponsive customer logic from a bus
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
US11204747B1 (en) * 2017-10-17 2021-12-21 Xilinx, Inc. Re-targetable interface for data exchange between heterogeneous systems and accelerator abstraction into software instructions
GB2574800B (en) * 2018-06-06 2021-01-06 Kaleao Ltd A system and method for bridging computer resources
US10802995B2 (en) * 2018-07-26 2020-10-13 Xilinx, Inc. Unified address space for multiple hardware accelerators using dedicated low latency links
US10517189B1 (en) * 2018-08-27 2019-12-24 Quanta Computer Inc. Application and integration of a cableless server system
CN111414129B (zh) * 2019-01-07 2023-05-05 阿里巴巴集团控股有限公司 基于云的fpga控制数据的配置系统和方法以及电子设备
CN110888834B (zh) * 2019-11-06 2022-05-31 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 一种pcie设备中fpga功能动态重构的方法及系统
US20210303315A1 (en) * 2020-03-31 2021-09-30 Src Labs, Llc Application logic architecture defining separate processing planes
US11687629B2 (en) * 2020-06-12 2023-06-27 Baidu Usa Llc Method for data protection in a data processing cluster with authentication
CN111858461A (zh) * 2020-07-10 2020-10-30 浪潮电子信息产业股份有限公司 Fpga异构加速平台部分重置、系统、设备及介质
CN113400937B (zh) * 2021-04-15 2022-05-24 浙江吉利控股集团有限公司 车辆娱乐信息显示系统及车辆

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8280930B1 (en) * 2008-12-19 2012-10-02 Emc Corporation Obtaining configuration information from host devices which store data into and load data from a data storage array

Family Cites Families (117)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000513523A (ja) 1996-06-21 2000-10-10 オーガニック システムズ インコーポレイテッド プロセスの即時制御を行う動的に再構成可能なハードウェアシステム
GB2321322B (en) 1996-10-28 2001-10-10 Altera Corp Remote software technical support
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 富士ゼロックス株式会社 情報処理システム、回路情報管理方法および回路情報記憶装置
DE69910826T2 (de) 1998-11-20 2004-06-17 Altera Corp., San Jose Rechnersystem mit rekonfigurierbarer programmierbarer logik-vorrichtung
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
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設計プログラム
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
JPWO2004075056A1 (ja) 2003-02-21 2006-06-01 独立行政法人産業技術総合研究所 ウイルスチェック装置及びシステム
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
US7243221B1 (en) 2004-02-26 2007-07-10 Xilinx, Inc. Method and apparatus for controlling a processor in a data processing system
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
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
US7706417B1 (en) * 2005-10-25 2010-04-27 Xilinx, Inc. Method of and circuit for generating a plurality of data streams
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 論理プログラマブルデバイス保護回路
WO2008014494A2 (en) 2006-07-28 2008-01-31 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
US8219989B2 (en) * 2007-08-02 2012-07-10 International Business Machines Corporation Partition adjunct with non-native device driver for facilitating access to a physical input/output 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 独立行政法人産業技術総合研究所 再構成可能論理デバイスの論理プログラムデータ保護システム及び保護方法
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)
WO2010100871A1 (ja) 2009-03-03 2010-09-10 日本電気株式会社 遅延ライブラリ生成システム
WO2010106738A1 (ja) * 2009-03-18 2010-09-23 日本電気株式会社 再構成可能な論理回路
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
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
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 日本電信電話株式会社 データ処理システム
KR20140061479A (ko) 2011-08-31 2014-05-21 톰슨 라이센싱 엔드-유저 디바이스의 구성 데이터의 보안 백업 및 복원을 위한 방법, 및 상기 방법을 이용하는 디바이스
US8726337B1 (en) * 2011-09-30 2014-05-13 Emc Corporation Computing with presentation layer for multiple virtual machines
KR101614859B1 (ko) 2011-12-02 2016-04-22 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 서비스로써의 집적 회로
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
US8775576B2 (en) 2012-04-17 2014-07-08 Nimbix, Inc. Reconfigurable cloud computing
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
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
US8910109B1 (en) 2013-08-12 2014-12-09 Altera Corporation System level tools to support FPGA partial reconfiguration
WO2015026373A1 (en) 2013-08-23 2015-02-26 Empire Technology Development, Llc Detacenter-based hardware accelerator integration
US9098662B1 (en) 2013-08-28 2015-08-04 Altera Corporation Configuring a device to debug systems in real-time
WO2015042684A1 (en) 2013-09-24 2015-04-02 University Of Ottawa Virtualization of hardware accelerator
US9237165B2 (en) 2013-11-06 2016-01-12 Empire Technology Development Llc Malicious attack prevention through cartography of co-processors at datacenter
US10461937B1 (en) * 2013-12-18 2019-10-29 Amazon Technologies, Inc. Hypervisor supported secrets compartment
JP6190471B2 (ja) * 2013-12-27 2017-08-30 株式会社日立製作所 パーティション実行制御装置、パーティション実行制御方法及び計算機に読み込み可能な記憶媒体
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
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
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
US9684743B2 (en) 2015-06-19 2017-06-20 Synopsys, Inc. Isolated debugging in an FPGA based emulation environment
US9590635B1 (en) 2015-12-03 2017-03-07 Altera Corporation Partial reconfiguration of programmable devices
US10069681B2 (en) * 2015-12-31 2018-09-04 Amazon Technologies, Inc. FPGA-enabled compute instances
JP6620595B2 (ja) 2016-02-25 2019-12-18 富士通株式会社 情報処理システム、情報処理装置、管理装置、処理プログラム、及び処理方法
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
US10528765B2 (en) 2016-09-16 2020-01-07 Intel Corporation Technologies for secure boot provisioning and management of field-programmable gate array images
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
US11099894B2 (en) 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US10282330B2 (en) 2016-09-29 2019-05-07 Amazon Technologies, Inc. Configurable logic platform with multiple reconfigurable regions
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
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
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
US10747565B2 (en) * 2017-04-18 2020-08-18 Amazon Technologies, Inc. Virtualization of control and status signals
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8280930B1 (en) * 2008-12-19 2012-10-02 Emc Corporation Obtaining configuration information from host devices which store data into and load data from a data storage array

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"computing framework for dynamic integration of reconfigurable resources in a cloud";Oliver Knodel 等;《2015 Euromicro Conference on Digital System Design》;20151026;第339-342页 *
"Enabling FPGAs in Hyperscale Data Centers";Jagath Weerasinghe 等;《2015 IEEE 12th Intl Conf on Ubiquitous Intelligence and Computing and 2015 IEEE 12th Intl Conf on Autonomic and Trusted Computing and 2015 IEEE 15th Intl Conf on Scalable Computing and Communications and Its Associated Workshops (UIC-ATC-ScalCom)》;20160721;第1081-1085页 *
"FPGAs in the Cloud: Booting Virtualized Hardware Accelerators with OpenStack";Stuart Byma 等;《2014 IEEE 22nd Annual International Symposium on Field-Programmable Custom Computing Machines》;20140724;第109-113页 *
"Virtualized FPGA Accelerators for Efficient Cloud Computing";Suhaib A Fahmy 等;《2015 IEEE 7th International Conference on Cloud Computing Technology and Science (CloudCom)》;20160204;第432-434页 *

Also Published As

Publication number Publication date
US11182320B2 (en) 2021-11-23
CN109791508A (zh) 2019-05-21
JP6886013B2 (ja) 2021-06-16
US20200334186A1 (en) 2020-10-22
US20180089119A1 (en) 2018-03-29
EP3519961A1 (en) 2019-08-07
US10705995B2 (en) 2020-07-07
WO2018064418A1 (en) 2018-04-05
JP2019530100A (ja) 2019-10-17
EP3519961B1 (en) 2023-11-08
US10282330B2 (en) 2019-05-07
US20190213155A1 (en) 2019-07-11

Similar Documents

Publication Publication Date Title
CN109791508B (zh) 具有多个可重配置区域的可配置逻辑平台
JP6942824B2 (ja) 構成可能論理プラットフォーム
CN110998555B (zh) 支持可适应性主机逻辑的逻辑仓储服务
US10963268B1 (en) Interception of identifier indicative of client configurable hardware logic and configuration data
US11704459B2 (en) Logic repository service
JP2019534508A (ja) 再構成可能な論理デバイス内の以前に記憶した論理へのアクセスの制御
US20240134811A1 (en) Configurable logic platform

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