CN109791518A - 从多租户环境中的fpga提取调试信息 - Google Patents
从多租户环境中的fpga提取调试信息 Download PDFInfo
- Publication number
- CN109791518A CN109791518A CN201780060407.5A CN201780060407A CN109791518A CN 109791518 A CN109791518 A CN 109791518A CN 201780060407 A CN201780060407 A CN 201780060407A CN 109791518 A CN109791518 A CN 109791518A
- Authority
- CN
- China
- Prior art keywords
- logic
- host
- application
- circuit
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/31705—Debugging aspects, e.g. using test circuits for debugging, using dedicated debugging test circuits
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/2851—Testing of integrated circuits [IC]
- G01R31/2884—Testing of integrated circuits [IC] using dedicated test connectors, test elements or test circuits on the IC under test
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3172—Optimisation aspects, e.g. using functional pin as test pin, pin multiplexing
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3177—Testing of logic operation, e.g. by logic analysers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
Abstract
公开了用于对多租户服务器环境的诸如FPGA等可重新配置逻辑器件进行编程的方法和装置。在一个示例中,计算主机包括:被配置为执行管理员进程和两个或更多个用户进程的一个或多个处理器,和被配置为多个分区的单个FPGA集成电路。分区包括:主机逻辑分区,其仅可由在计算主机上执行的管理员进程访问;和两个或更多个加速器分区。各加速器分区被配置为包括具有逻辑分析器的虚拟调试单元,该逻辑分析器收集由相应加速器分区内的逻辑生成的逻辑信号并且将指示逻辑信号的值的调试数据发送到用户进程之一。在一些示例中,主机逻辑分区和/或加速器分区可以在单个FPGA的它们各自的部分内彼此独立地重新编程。
Description
背景技术
云计算是使用可在远程位置可用且可通过网络(例如因特网)访问的计算资源(硬件和软件)。在一些布置中,用户可以根据需要的服务购买这些计算资源(包括存储和计算能力)作为实用程序。云计算通过用户的数据、软件和计算来委托远程服务。使用虚拟计算资源可以提供许多优势,该优势包括成本优势和/或快速适应变化的计算资源需求的能力。
通过使用协作处理器可以加速一些计算,该协作处理器包括使用(例如,现场可编程门阵列(FPGA)中的)可重新配置逻辑实现的加速器。FPGA开发人员通常将具有专用接口的本地主机计算机连接到支持JTAG接口的本地FPGA的外部引脚,以便获得调试信息,例如内部信号状态值。在云计算环境中调试此类加速器缺乏专用的硬件和安全特征,从而提供了充分改进的机会。
附图说明
图1是示意了如可以在所公开的技术的某些示例中实现的,包括用于管理配置数据和查看调试数据的逻辑仓储服务的系统的示例的系统图。
图2是示意了逻辑仓储服务的示例性架构的系统图。
图3是概述了如可以在所公开的技术的某些示例中实现的,包括具有虚拟调试单元的应用逻辑的系统的示例性配置的块图。
图4图示了可以由逻辑仓储服务执行的摄取和生成配置数据的示例。
图5示意了图4的示例性系统的进一步细节,该细节包括用于对可配置硬件平台进行配置和与可配置硬件平台进行接口连接的控制平面和数据平面的组件。
图6是概述了如可以在所公开的技术的某些示例中执行的,对可重新配置逻辑器件进行编程以将调试数据发送到主机计算机的示例性方法的流程图。
图7是概述了如可以在所公开的技术的某些示例中执行的,与可重新配置逻辑器件的另一部分独立地对可重新配置逻辑器件的一部分进行重新编程的示例性方法的流程图。
图8是概述了如可以在所公开的技术的某些示例中执行的,从计算主机对可重新配置逻辑器件中的应用电路进行调试的示例性方法的流程图。
图9是示意了在包括逻辑仓储服务的多租户环境中运行的多个虚拟机实例的示例性系统图。
图10描述了可以实现所述的某些创新的合适的计算环境的一般化示例。
具体实施方式
用于在一组可重复使用的通用计算资源内提供专用计算资源的一种解决方案是提供包括可配置逻辑平台的服务器计算机(例如,通过提供具有包括现场可编程门阵列(FPGA)的插入卡的服务器计算机)作为通用计算资源中的选择。可配置逻辑是这样的硬件:可以被编程或被配置为执行应用于可配置逻辑的配置数据所指定的逻辑功能。例如,计算资源的用户可以在使用图形捕捉应用生成的网表中或在由用于配置可配置逻辑的脚本生成的网表中提供(例如,以硬件描述语言(例如,Verilog、SystemVerilog和/或VHDL)或其他语言(例如,C、C++和/或SystemC)编写的)规范。可配置逻辑可以根据该规范进行配置,且配置的逻辑可以用于为用户执行任务。然而,允许用户访问计算设施的低级硬件可能潜在地在计算设施内引入安全和隐私问题。
如本文所述,计算服务设施可以包括各种计算资源,其中一类计算资源可以包括具有可配置逻辑平台的服务器计算机(或称为主机计算机)。可配置逻辑平台可以由计算机系统的用户编程或配置,使得计算资源的硬件(例如,可配置逻辑)由用户定制。例如,用户可以编程可配置逻辑,使得其起到紧密耦接到服务器计算机的硬件加速器的作用。例如,可以通过服务器计算机的本地互连(例如,外围组件互连高速(PCI-Express或PCIe)或IEEE802.3(以太网)连接)访问硬件加速器。用户可以执行服务器计算机上的应用,且应用的任务可以由硬件加速器使用PCIe事务来执行。通过将硬件加速器紧密耦接到服务器计算机,可以减小加速器和服务器计算机之间的延迟,这可以潜在地增加应用的处理速度。
计算服务提供者可以使用软件服务来管理计算资源,以管理可配置硬件的配置和操作。作为一个示例,计算服务提供者可以执行逻辑仓储服务,以用于摄取用户的硬件或逻辑设计,生成用于根据用户的逻辑设计来配置可配置逻辑平台的已验证的配置数据,并且响应于对可配置逻辑平台的实例进行配置的请求来下载已验证的配置数据。配置数据可以包括用于在可配置逻辑平台上创建调试资源的数据,从而允许查看信号值、指示事件发生的触发、性能计数器和用于监视可重新配置逻辑器件的其他合适的调试技术。下载请求可以来自开发逻辑设计的用户,或来自已获得使用逻辑设计许可的用户。因此,逻辑设计可以由计算服务提供者、用户或与用户或计算服务提供者分开的第三方创建。例如,可以将加速器知识产权(IP)的市场提供给计算服务提供者的用户,且用户可以通过从市场中选择加速器来潜在地增加他们应用的速度。
图1是示意了系统100的示例的系统图,系统100包括用于管理配置数据的逻辑仓储服务110,该配置数据用于配置计算资源120内的可配置资源。特别地,逻辑仓储服务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,该主机逻辑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进行编程或配置的信息,使得可配置硬件142执行由应用逻辑132和主机逻辑134指定的功能。作为一个示例,计算服务提供者可以生成包括用于在CPU 144和可配置硬件142之间进行接口连接的逻辑的主机逻辑134。在一些示例中,主机逻辑134可以包括用于掩蔽或屏蔽应用逻辑132(包括其具有的任何调试功能)与CPU 144直接通信的逻辑,使得所有CPU应用逻辑事务都通过主机逻辑134。以此方式,主机逻辑134可以潜在地降低可能由应用逻辑132引入的安全性和可用性风险。在其他示例中,应用逻辑132可以经由诸如PCIe、以太网、无限带宽技术等接口或其他合适的接口与CPU 144直接通信。
生成配置数据136可以包括对应用逻辑132执行检查和/或测试,将应用逻辑132集成到主机逻辑134包装器中,合成应用逻辑132,和/或布局和路由应用逻辑132。
生成配置数据136可以包括将应用逻辑132和主机逻辑134的源代码编译和/或翻译成可以用于对可配置硬件142进行编程或配置的数据。例如,逻辑仓储服务110可以将应用逻辑132集成到主机逻辑134包装器中。具体地,应用逻辑132可以在包括应用逻辑132和主机逻辑134的系统设计中实例化。集成系统设计可以使用逻辑合成程序来合成,以创建用于系统设计的网表。网表可以使用布局和路由程序来布局和路由,以用于为系统设计指定的实例类型。布局和路由的设计可以被转换为可以用于对可配置硬件142进行编程的配置数据136。例如,配置数据136可以直接从布局和路由程序输出。
作为一个示例,生成的配置数据136可以包括用于对FPGA的可配置逻辑的所有或部分进行配置的完整或部分比特流。FPGA可以包括可配置逻辑和不可配置逻辑。可配置逻辑可以包括可编程逻辑块(其包括组合逻辑和/或查找表(LUT)和顺序逻辑元件(例如触发器和/或锁存器)),可编程路由和时钟资源,可编程分布式和块随机存取存储器(RAM),数字信号处理(DSP)位片,和可编程输入/输出引脚。FPGA的配置访问端口可以用于将以比特流编码的配置数据加载到FPGA配置存储器中。在其他示例中,FPGA被编程为包括用于加载配置数据的内部配置访问端口。加载在片上存储器内的值可以用于控制可配置逻辑,使得可配置逻辑执行由比特流指定的逻辑功能。此外,可配置逻辑可以划分为可以彼此独立配置的不同分区或区域。作为一个示例,全部比特流可以用来配置所有区域的可配置逻辑,且部分比特流可以用来配置可配置逻辑区域的仅一部分。例如,主机逻辑部、第一应用逻辑部、第二应用逻辑部等每个的各部分比特流可以生成、下载到可配置硬件平台且用于独立编程单个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的安全性和可用性。
一旦使用已验证的配置数据162配置了可配置硬件142,就可以从服务器计算机接收调试数据170(例如,信号值,事件计数器值,或存储器值)。例如,接收到的信号值可以用于在显示器175上生成波形以辅助调试。作为另一示例,可以将调试数据发送到服务器计算机140,以将可重新配置逻辑中的状态值强制为特定值,或重置事件计数器。
如上所述,在一些示例中,可以使用服务器计算机140、使用计算资源120内的其他资源或使用除了计算资源120以外的其他额外资源来执行上述的用于逻辑仓储服务110的操作。
图2是示意了逻辑仓储服务205的示例性架构200的系统图。逻辑仓储服务205可以是在由计算服务提供者管理的服务器计算机上执行的软件。可以通过一个或多个web API访问逻辑仓储服务205。
逻辑仓储服务205可以包括提供者接口210,其用于服务计算服务提供者的API请求。提供者接口210可以用来验证请求来自计算服务提供者的代理,例如通过使用请求中提供的凭证来验证请求者的身份。提供者接口210可以提供主机逻辑摄取功能215。特别地,提供者接口210可以接收将主机逻辑设计上传至逻辑仓储服务205的请求,并且该请求可以由主机逻辑摄取功能215处理。如上所述,主机逻辑可以包括这样的逻辑:用于使应用逻辑沙箱化,以维护计算资源的安全性和可用性。此外,主机逻辑还可以划分为静态逻辑和可重新配置逻辑。静态逻辑可以在初始化序列期间(例如,开机时)被配置,而可重新配置逻辑可以在可配置逻辑的操作期间的不同时间被配置。作为一个示例,PCI Express接口可以指定,在解除复位信号后的约一百毫秒内启动和枚举PCI端点。主机逻辑可以划分为:可以在分配的时间窗口内加载的静态逻辑,和可以在时间窗口过去后加载的可重新配置逻辑。静态逻辑可以用作不同可重新配置区域之间的接口。可以使用例如以系统Verilog、Verilog或VHDL编写的HDL源代码指定主机逻辑设计。HDL源代码可以加密或不加密。在一些示例中,伴随或替代HDL源代码,可以提供描述逻辑组件的网表。主机逻辑摄取模块215可以用于对接收的主机逻辑设计执行检查,解密主机逻辑设计,和/或提供主机逻辑设计的版本化信息。此外,请求可以包括用于将主机逻辑设计与一个或多个实例类型关联的信息。例如,一些主机逻辑设计可以仅与实例类型的一个子集一起工作,而其他主机逻辑设计可以仅与实例类型的不同子集一起工作。
逻辑仓储服务205可以包括客户-开发人员接口220,其用于服务来自逻辑仓储服务205的用户的API请求。客户-开发人员接口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,其包括如可以用于所公开的技术的某些示例中的CPU 144和可配置硬件142。如图所示,可配置硬件142包括已经被编程以实现主机逻辑310的可重新配置逻辑器件。主机逻辑310包括静态逻辑312和动态逻辑314,静态逻辑312通常不经常重新编程,动态逻辑314通常更频繁地重新编程。例如,动态逻辑314可以是每次重新编程或修改应用逻辑单元320时重新配置。主机逻辑310还包括控制信号生成器316,其向应用逻辑单元320发送控制信号和从应用逻辑单元320接收控制信号。主机逻辑310还包括触发生成逻辑317,其生成可以由应用逻辑单元中的调试逻辑使用的触发信号,以便例如捕获数据和其他信号以在触发信号的上升沿或下降沿上进行调试。主机逻辑310还包括时钟生成器318,其生成用于对应用逻辑单元320内的顺序逻辑的操作进行调节的时钟信号。主机逻辑310还包括缓冲器319,例如先进先出(FIFO)缓冲器,其可以从应用逻辑单元320接收数据并缓冲它直到它经由接口被发送到CPU 144。控制生成器316、触发生成器317、时钟生成器318和缓冲器319中的每个均可以在静态逻辑312内、在动态逻辑314内或在静态逻辑和动态逻辑两者内实现。
如图所示,应用逻辑单元320被配置为包括虚拟调试单元322。应用逻辑单元320可以用于实现功能加速器,该功能加速器是已经配置的可重新配置硬件,以便加速指定由应用逻辑单元320执行的功能的计算。应用逻辑单元320可以包括虚拟调试单元322,其被配置为捕获指定的内部和/或外部信号(例如,由组合或顺序逻辑生成的),状态元件值(例如,存储在触发器,锁存器中,或其他存储元件中的),存储在存储器中或由存储器输出的值,以及由应用逻辑单元320的操作生成的其他数据。例如,虚拟调试单元322可以包括:逻辑探针,该逻辑探针耦接以捕获由应用逻辑单元320内的加速器逻辑生成的值;逻辑探针,该逻辑探针捕获由加速器逻辑在由触发生成器317创建的一个或多个触发进行发信号的时间点上生成的逻辑值;事件计数器,该事件计数器计算加速器内发生事件的次数;能量计数器,该能量计数器计算加速器内的转换并且可以用于计算应用逻辑单元320的能量消耗,扫描逻辑(例如,来自应用逻辑单元320内的仪表化触发器或锁存器的链)生成的值,或通过在应用逻辑单元320内设置断点条件而生成的中断。
可以包括用于虚拟调试单元322的组件,该组件的额外示例包括用于使用扫描链内的仪表化触发器或锁存器将值强制存储在状态元件中的输入,用于将值应用到扫描单元输入的电路,用于将状态元件强制到某个逻辑值的电路,用于将事件计数器重置或设置为规定值的电路,用于设置中断断点的电路,或用于设置触发条件的电路。在一些示例中,虚拟调试单元322包括逻辑探针阵列,其耦接以捕获由应用逻辑单元320内的加速器逻辑生成的逻辑值。因此,逻辑探针阵列形成应用逻辑单元内的“逻辑分析器”。在其他示例中,逻辑分析器可以形成在主机逻辑310内。动态逻辑314包括用于将主机逻辑310连接到应用逻辑单元320的互连。因此,当可配置硬件142的一部分被重新配置以改变或修改应用逻辑单元320时,可以通过重新配置动态逻辑314而不重新编程任何静态逻辑312来更新和重新连接到主机逻辑310的连接。用于虚拟调试单元的电路可以包含在主机逻辑中,包含在应用逻辑中,或形成在主机逻辑和应用逻辑两者的部分中。
应用逻辑单元320也可以包括存储器324。存储器324可以多种不同方式实现,其包括使用嵌入式/内部FPGA存储器电路实现,该电路例如是:块RAM,分布式RAM,和配置存储器。
可配置硬件142可以包括多个应用逻辑部,例如:应用逻辑单元330,其包括第二虚拟调试单元332和第二存储器334;和应用逻辑单元340,其包括第三虚拟调试单元342和第三存储器344。应用逻辑单元320、330和340每个部分与主机逻辑310的单独通道或信道进行通信。主机逻辑310或相应的虚拟调试单元可以用于向相应存储器324、334和344写入或读取数据以进行调试操作。此外,可以重新配置任何应用逻辑部,而无需调整与其他应用逻辑部的连接。例如,主机逻辑310被配置为具有用于每个应用逻辑部的另外一组控制生成器、触发生成器、时钟生成器和缓冲器。这允许独立于其他应用逻辑部来重新编程任何应用逻辑部。例如,如果在单个FPGA集成电路上包括两个或更多个应用逻辑部,则可以部分地重新配置FPGA的任何其他部分,以便仅重新编程所选择的应用逻辑部中的一者。在一些示例中,部分地根据编程粒度和目标FPGA的特征来选择FPGA部。例如,可以通过将FPGA中的阵列逻辑组件的行范围或列范围分配给不同部分来创建FPGA部。
主机逻辑部和应用逻辑部与在CPU 144上执行的单独主机分区(例如,单独的进程或虚拟机)关联。对于图3所示的示例,主机逻辑310与在CPU 144上执行的管理员模式进程315关联。管理员模式进程315以比CPU的其他进程更高特权级别地执行。例如,服务器计算机140的管理员可以是具有足够特权来使用或控制管理员模式进程315的唯一实体。应用逻辑单元320、330和340中的每个分别与对应的用户模式进程325、335和345关联。用户模式进程具有比管理员模式进程315低的特权级别,因此,除管理员之外,其他用户也可以控制和使用用户模式进程。
CPU 144经由接口350耦接到可配置硬件142。接口350可以使用任何合适的互连技术实现,包括但不限于:PCIe,以太网和无限带宽技术。每个应用逻辑部使用接口350的不同预留部分,以便与其关联的用户模式进程通信。例如,可以允许每个用户模式进程访问不同范围的存储器地址,且主机逻辑310又将每个单独的应用逻辑部仅耦接到与其对应进程关联的存储器地址范围。因此,应用逻辑是进一步独立的,因为除了与应用逻辑单元关联的那些用户模式进程之外,不能向其他用户模式进程发送数据或从其他用户模式进程接收数据。类似地,管理员模式进程315可以经由另一个受限制的存储器范围耦接到主机逻辑310。
如图3所示,在替代示例中,一些组件可以被配置为占据可配置硬件142的不同部分。例如,使用虚线图示了包括虚拟调试单元372和第四存储器374的应用逻辑单元370的替代配置。在图示的示例中,应用逻辑单元370不耦接到主机逻辑310,而是直接经由互连接口耦接到与其关联的用户模式进程。例如,接口350可以被配置为使得应用逻辑单元部370写入特定的存储器地址范围,该特定的存储器地址范围又与特定的用户模式进程关联,而不经由主机逻辑310进行通信。
此外,可配置硬件142可访问的存储器不限于嵌入式内部存储器324、334、344和374。例如,位于单独的集成电路管芯上的外部存储器374可以经由I/O接口总线耦接到可配置硬件的I/O单元。主机逻辑310可以被配置为向外部存储器374写入和读取,从而进一步增强调试可见性。在一些示例中,为每个应用逻辑单元提供单独的外部存储器管芯,而在其他示例中,主机逻辑310被配置为在调试存储在外部存储器374中的数据值时保持应用逻辑单元之间的隔离。
在一些示例中,调试单元360的全部或部分可以在主机逻辑310内的静态或动态逻辑内实现。例如,应用逻辑部的输入和输出信号可以耦接到主机逻辑虚拟调试单元360。
在一些示例中,耦接到主机逻辑310和/或应用逻辑部的进程中的每个均与在由CPU 144托管的不同虚拟机中执行的进程关联。在其他示例中,两个或更多个进程可以在同一虚拟机内执行。
图4图示了可以由逻辑仓储服务执行的摄取逻辑设计和产生配置数据的示例性流程400。在摄取410期间,可以由逻辑仓储服务接收应用逻辑405、主机逻辑406和/或调试单元逻辑407的描述。在一些示例中,应用逻辑405为调试单元逻辑407实例化一个或多个单元实例,并且将调试电路相应地并入到应用逻辑中。在一些示例中,提供对应用逻辑405的期望调试数据的描述(例如,单元、实例、信号、变量的列表;计数器的描述,或其他合适的描述),并且将调试电路并入到应用逻辑中以生成期望的调试数据。可以加密逻辑设计,例如通过使用IEEE 1735-2014加密标准。可以在摄取410期间或在流程400的后续步骤期间解密逻辑设计。
作为一个示例,可以在摄取410期间接收应用逻辑405和调试单元逻辑407的源代码,并且可以将应用逻辑和调试单元逻辑组合成设计以产生用于逻辑合成420的源代码以用于编程可重配置逻辑器件的第一部分。主机逻辑406的源代码可以用于产生用于逻辑合成420的源代码,以用于编程可重新配置逻辑器件的第二部分。逻辑合成420可以用于根据目标技术将以行为和/或结构RTL编写的规范变换为网表。例如,逻辑合成420可以面向不同的可配置逻辑技术,例如具有不同架构、制造工艺、容量和/或制造商的FPGA。网表可以包括许多可配置逻辑块、不可配置块(例如,硬或软宏)以及不同块之间的连接。网表可以是逻辑网表,其中,枚举网表的块,但是网表的块未被布局在目标技术内。网表可以用作布局和路由430的输入。布局和路由430可以从网表和路由信息中获取可配置块的实例,并且将块映射到物理的可重新配置逻辑器件。布局和路由设计可以包括网表的每个逻辑组件的物理映射。额外地或替代地,可以对布局和路由430进行定时驱动,以便根据设计的时序约束和物理设备的物理约束来修改网表。布局和路由430的输出可以是配置数据,例如比特流映像。配置数据可以被分区或划分为不同的组件。例如,配置数据可以包括与静态主机逻辑(例如,静态逻辑312)、可重新配置主机逻辑(例如,动态可重新配置逻辑314)和/或可重新配置应用逻辑(例如,应用逻辑单元320)关联的数据。不同的组件可以重叠或不重叠。例如,静态主机逻辑可以通过可重新配置应用逻辑使用的区域进行路由。因此,可重新配置应用逻辑的部分比特流还可以包括静态主机逻辑的部分。
作为另一示例,可以在摄取410期间接收应用逻辑和/或主机逻辑的网表。作为具体示例,可以为应用逻辑接收网表,且可以为主机逻辑接收源代码。在这种情况下,主机逻辑可以与逻辑合成420合成以生成主机逻辑的网表,且主机和应用逻辑的网表可以组合成单个设计以产生用于布局和路由430的网表。作为另一示例,可以在摄取410期间接收应用逻辑和/或主机逻辑的配置数据。例如,可以接收用于应用逻辑设计的部分比特流,或可以接收用于主机和应用逻辑设计的全部比特流。
作为另一示例,定时报告可以提供静态时序分析,其示意设计是否满足可配置硬件的时序规范。逻辑合成420以及布局和路由430可以涉及随着工具的每次运行而变化的随机的非确定性步骤,使得逻辑合成420以及布局和路由430的每次运行都可以提供不同的结果。因此,如果开发人员具有不满足时序的设计(如定时报告所示),则开发人员可能希望重新运行逻辑合成420和/或布局和路由430。通过这种方式,开发人员可以通过为同一设计执行多个合成和路由运行来迭代他们的设计。
库管和验证440功能可以用于在开发和部署步骤期间的各个点验证可配置逻辑的用户设计。作为一个示例,验证440可以包括执行模拟以验证应用逻辑是否与主机逻辑兼容,使得主机逻辑可以约束应用逻辑的功能。验证440可以包括比较应用逻辑的网表并确认应用逻辑满足可配置硬件平台的容量和面积限制。例如,可以限制应用逻辑仅使用一个或多个可重新配置区域内的逻辑。如果应用逻辑位于该区域外,则可以拒绝该应用逻辑。此外,可以将应用逻辑作为比特流摄取,并且可以通过验证440来验证比特流。比特流的验证可以包括将对应于主机逻辑的摄取比特流数据的一部分与主机逻辑的基线版本进行比较,以确认主机逻辑未被破坏。验证440的输出可以是已验证的配置数据。
图5示意了示例性系统500的进一步细节,该系统500包括用于配置和以接口方式连接到可配置硬件平台510的控制平面和数据平面的组件。控制平面包括用于初始化、监视、重新配置和拆除可配置硬件平台510的功能。数据平面包括用于在用户的应用与可配置硬件平台510之间进行通信的功能。控制平面可以由具有较高特权级别的用户或服务访问,数据平面可以由具有较低特权级别的用户或服务访问。在一个示例中,可配置硬件平台510使用诸如PCIe等本地互连来连接到服务器计算机540。在一些示例中,使用不同的互连,例如以太网或无限宽带技术。在替代示例中,可配置硬件平台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所需的设备驱动器。用户主机分区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还可以用于向可配置硬件平台510发送调试数据和从可配置硬件平台510接收调试数据。通过将管理分区550用于这些目的,可以限制对可配置硬件平台510的配置数据和配置端口的访问。具体地,可以限制具有较低特权级别的用户直接访问管理分区550。此外,可以限制具有较低特权级别的用户访问其他用户主机分区。因此,在不使用计算服务提供者的基础设施的情况下不能修改可配置逻辑,并且可以保护用于编程可配置逻辑的任何第三方IP免于被未授权用户查看。此外,还防止未授权用户向可配置硬件平台510上的未授权分区发送调试数据或从其接收任何调试数据。
管理分区550可以包括用于控制平面的软件栈,以配置和以接口方式连接到可配置硬件平台510。控制平面的软件栈可以包括可配置逻辑(CL)应用管理层552,其用于与web服务(例如,逻辑仓储服务或健康监视服务)、可配置硬件平台510和用户主机分区560进行通信。例如,CL应用管理层552可以响应于正在启动的用户分区560而发出获取配置数据的请求。CL应用管理层552可以使用硬件542的共享存储器,或通过将服务器计算机540连接到可配置硬件平台510的互连发送和接收分区间消息,来与用户分区560进行通信。具体地,CL应用管理层552可以将消息读取和写入可配置硬件平台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可以经由一个或多个管理员通道525至527与可配置硬件平台510的主机逻辑520通信。例如,管理员通道可以在连接到物理互连的设备的枚举期间访问映射到地址范围的物理或虚拟功能。管理驱动器556可以通过将事务寻址到被分配给一个或多个管理员通道525至527的地址范围来与主机逻辑520通信。
控制平面的软件栈可以包括CL管理和监视层558。CL管理和监视层558可以监视和分析发生在物理互连上的事务,以确定可配置硬件平台510的健康状况和/或确定可配置硬件平台510的使用特性。例如,CL管理和监视层558可以监视配置数据是否成功部署在可配置硬件平台510上,并且可以使报告被发送到指示部署状态的逻辑仓储服务。
用户服务器570可以用于将配置数据575发送到管理分区550。配置数据575可以被验证,然后用于编程应用逻辑530的一部分(例如,一个或多个可配置逻辑分区)。用户服务器570还可以向管理分区发送命令以启动编程的分区的操作。随着执行的进行,调试数据576被接收并且可以显示在耦接到用户服务570的用户显示器580上。例如,可以显示和分析对可配置逻辑分区内的信号值的变化进行示意的时序波形,以确定故障、错误和其他感兴趣点的可能位置。在一些替代示例中,用户服务器570与用户主机分区之一进行通信,以便向可配置逻辑分区发送调试数据并从可配置逻辑分区接收调试数据。
在一些示例中,分配对可配置硬件平台510的访问,使得管理分区550或用户主机分区560之一托管一个或多个管理员进程,并且主机逻辑520仅可从管理员进程访问,应用逻辑530可从在同一分区内执行的用户进程访问。管理员进程被配置为以比用户进程高的特权级别来操作。在其他示例中,分配对可配置硬件平台510的访问,使得管理分区550执行管理员进程,并且用户进程由一个或多个用户主机分区560执行。在一些示例中,每个用户进程在由不同的一个用户主机分区560执行的不同虚拟机中执行。
可配置硬件平台510可以包括不可配置硬宏和可配置逻辑。硬宏可以执行可配置硬件平台510内的特定功能,例如,输入/输出块(例如,串行器和解串器(SERDES)块和千兆位收发器)、模数转换器、存储器控制块、测试访问端口和配置端口522。可配置逻辑可以通过将配置数据加载到可配置硬件平台510上来编程或配置。例如,配置端口522可以用于加载配置数据。作为一个示例,配置数据可以存储在配置端口522可访问的存储器(诸如闪存)中,并且配置数据可以在可配置硬件平台510的初始化序列期间(诸如在通电序列期间)被自动加载。此外,可以使用片外处理器或可配置硬件平台510内的接口来访问配置端口522。
可配置逻辑可以被编程为包括主机逻辑520和应用逻辑530。主机逻辑520可以屏蔽至少一些硬宏与终端用户的接口,使得终端用户对硬宏和物理互连具有有限的访问。例如,主机逻辑可以限制用户主机分区560的访问,使得仅访问应用逻辑530内的与自己关联的可配置逻辑分区(例如,仅访问应用逻辑单元1、应用逻辑单元2和应用逻辑单元3中的一者)。在PCIe环境中,这可以通过将不同的用户主机分区分配给不同的存储器地址范围来实现,方法是通过配置基址寄存器(BAR)来为主机分区和可配置逻辑分区的某些组合预留某些存储器地址范围。
应用逻辑530可以包括硬宏和可配置逻辑。应用逻辑530可以被划分为两个或更多个部分,且每个部分可以被分配给一个或多个用户主机分区。每个可配置逻辑分区被主机逻辑520排除在访问可配置硬件平台的其他分区之外,主机逻辑520管理应用逻辑530资源的分区以及应用逻辑530和用户主机分区560之间的通信。如图所示,主机逻辑520分配许多不同通道的互连管理员通道525至527。在PCIe环境中,每个通道可以与用户主机分区/可配置逻辑分区对相关联。
主机逻辑520还可以耦接到邮箱逻辑521、配置端口522、主机接口514和应用逻辑530。终端用户可以使用户可配置应用逻辑530加载到可配置硬件平台510上,并且可以从用户主机分区560(经由用户通道535至537中的一者)与可配置应用逻辑530进行通信。
主机接口逻辑514可以包括用于在物理互连上发信号并实现通信协议的电路(例如,硬宏和/或可配置逻辑)。通信协议规定了通过互连进行通信的规则和消息格式。
在替代示例中,应用逻辑530内的分区被配置为在不通过主机逻辑520通信的情况下传送它们相应关联的用户主机分区560。在这样的示例中,用户可配置逻辑分区经由用户通道535至537中的一者耦接到用户主机分区中的相应一个。每个用户通道被配置为传输主机分区和可配置逻辑分区之间的数据。例如,在PCIe环境中,每个通道与不同的存储器地址范围关联。
除了应用逻辑530内的嵌入/内部存储器之外,单独的存储器531也可以耦接到应用逻辑530。存储器531可以位于单独的集成电路管芯上,且可以经由I/O接口总线耦接到应用逻辑530的I/O单元。主机逻辑520可以被配置为向外部存储器531写入和读取,从而进一步增强调试可见性。
应用逻辑530可以用于与用户主机分区560的驱动器进行通信。在例如PCIe环境中,用户通道535至537可以被实现为在连接到物理互连的设备的枚举期间映射到地址范围的物理或虚拟功能。应用驱动器可以通过将事务寻址到分配给用户通道535至537中的某一者的地址范围来与应用逻辑530进行通信。具体地,应用逻辑530可以与应用逻辑管理驱动器562通信,以在控制平面上交换命令、请求、响应、消息和数据。应用逻辑530可以与应用逻辑数据平面驱动器563通信,以在数据平面上交换命令、请求、响应、消息和数据。
在一些示例中,应用逻辑530的一个可配置逻辑分区被配置为使用单个通道与一个用户主机分区560通信。在一些示例中,应用逻辑530的一个可配置逻辑分区被配置为使用单个通道或使用每个主机分区的通道来与两个或更多个主机分区(例如,进程或虚拟机)通信。在一些示例中,一个主机分区被配置为分别与多个两个或更多个可配置逻辑分区通信,每个可配置逻辑分区使用单独的通道。
邮箱逻辑521可以包括一个或多个缓冲器和一个或多个控制寄存器。例如,给定的控制寄存器可以与特定的缓冲器关联,并且寄存器可以用作信号量以在管理分区550和用户分区560之间进行同步。作为具体示例,如果分区可以修改控制寄存器的值,则分区可以写入缓冲器。可从主机逻辑520访问缓冲器和控制寄存器。在替代示例中,可从主机逻辑520和应用逻辑530访问缓冲器和控制寄存器。当将消息写入缓冲器时,可以写入另一个控制寄存器(例如,消息就绪寄存器)以指示消息完整。消息就绪寄存器可以由分区轮询以确定是否存在消息,或可以响应于写入消息就绪寄存器而生成中断并将该中断发送到分区。
用户分区560可以包括软件栈,其用于以接口方式将终端用户应用560连接到可配置硬件平台510。应用软件栈可以包括用于与控制平面和数据平面进行通信的功能。具体地,应用软件栈可以包括CL应用API 564,其用于向终端用户应用560提供对可配置硬件平台510的访问。CL应用API 564可以包括用于与可配置硬件平台510和管理分区550进行通信的方法或功能的库。例如,终端用户应用561可以通过使用CL应用API 564的API将命令或数据发送到可配置应用逻辑530。特别地,CL应用API 564的API可以与应用逻辑(AL)数据平面驱动器563以接口方式连接,该应用逻辑(AL)数据平面驱动器563可以生成针对可以与目标分区通信的应用逻辑530的事务。以此方式,终端用户应用561可以使可配置应用逻辑530接收、处理和/或响应数据以潜在地加速终端用户应用561的任务。作为另一示例,终端用户应用561可以通过使用CL应用API 564的API将命令或数据发送到管理分区550。特别地,CL应用API 564的API可以与AL管理驱动器562以接口方式连接,该AL管理驱动器562可以生成针对可以与邮箱逻辑521通信的应用逻辑530的事务。以此方式,终端用户应用561可以使管理分区550提供关于可配置硬件平台510的操作或元数据和/或请求重新配置可配置应用逻辑530。
联合管理程序或内核544的应用软件栈可以用于限制终端用户应用561可通过物理互连执行的操作。例如,计算服务提供者可以提供AL管理驱动器562、AL数据平面驱动器563和CL应用API 564(例如,通过将文件与机器映像关联)。通过仅允许具有比终端用户高的特权级别的用户和服务写入文件,可以保护这些组件免于修改。AL管理驱动器562和AL数据平面驱动器563可以被限制为仅使用相关联的用户通道535至537之一的地址范围内的地址。此外,输入/输出存储器管理单元(I/O MMU)可以将互连事务限制在管理员通道525至527和/或用户通道535至537的地址范围内。
图6是概述了如可以在所公开的技术的某些示例中执行的,对可重新配置逻辑器件进行编程的示例性方法的流程图600。例如,诸如图1、3和5所述的等系统可以用于实现所示的方法。
在处理块610,使用包括应用电路和调试电路的电路对可重新配置逻辑器件的第一部分进行编程。调试电路耦接到应用电路,并且被配置为捕获通过训练应用电路内的逻辑而生成的调试数据。例如,调试电路可以通过对FPGA集成电路内的互连资源进行重新编程而耦接到应用电路。
在处理块620,对可重新配置逻辑器件的第二部分进行编程,使之具有与耦接到FPGA集成电路的主计算机连接的接口。该接口被配置为将调试数据从应用电路传输到主机计算机。该接口还可以被配置为将调试数据从主机计算机传输到调试电路。例如,该接口可以被配置为根据在主机计算机上执行的进程的指示来覆盖或设置应用电路内的信号。在一些示例中,调试电路包括逻辑分析器,该逻辑分析器被配置为根据一个或多个时钟信号和一个或多个触发信号来捕获当训练应用电路时的信号值。例如,可以在同一时间(例如,在上升或下降触发或时钟沿)全部捕获应用电路生成的数据信号的选择。
图7是概述了如可以在所公开的技术的某些示例中执行的,从FPGA和多租户服务器环境捕获调试数据的示例性方法的流程图700。例如,耦接到可重新配置逻辑器件的主机计算机(诸如上面关于图1、3和/或5所述的)可以用于执行所示的方法。
在处理块710,对可编程逻辑器件的主机部进行编程,以使之包括用于控制包括加速器逻辑的两个或更多个应用逻辑分区的操作的主机逻辑。例如,上述的主机逻辑310可以在FPGA的主机逻辑部内编程。在一些示例中,逻辑被合成或被生成,并转换成网表,然后用于生成用于对FPGA集成电路的一部分进行编程的配置信息。在一些示例中,FPGA被设计为支持对FPGA的可重新配置逻辑器件资源的一部分而不是全部进行重新编程。因此,减少了编程FPGA所需的时间量,因为只有一部分FPGA被配置为实现主机逻辑部或应用逻辑部。在其他示例中,主机逻辑的全部或至少一部分被内置到FPGA或用于监督应用逻辑部的其他可重新配置逻辑器件中。
在处理块720,使用包括应用电路(例如加速器)和相应的虚拟调试单元的电路对可编程逻辑器件的第一(用户)部分进行编程。虚拟调试单元耦接到加速器内的逻辑,以便捕获通过训练应用的电路而生成的调试数据。
在处理块730,对可编程逻辑器件的第二(用户)部分进行编程,使之包括第二应用电路和相应的调试电路。第二调试电路可以类似地被配置为捕获通过训练第二应用电路而生成的调试。
在处理块740,使用不同的第二电路对可编程逻辑器件的第一或第二用户部分进行重新编程,该第二电路包括第二应用电路和第二调试电路。第一部分的接口可以被配置为将调试数据从调试电路传输到主机计算机,而无需重新编程可编程逻辑器件的第二部分。因此,可以独立于包括应用电路的第二部分对包括应用电路的第一部分进行重新编程。
在所示方法的一些示例中,可以通过接收应用电路的用户描述来生成用于任何一个应用电路部的调试电路,该应用电路包括调试电路的实例化以及用于应用电路和调试电路的合成逻辑。合成逻辑用于配置可编程逻辑器件的第一部分。在一些示例中,应用电路的逻辑被合成,并且包括用于调试电路的实例化电路。在所公开的技术的一些示例中,可以通过接收应用电路的用户描述和从应用电路提取的调试数据的指示来生成调试电路。
该方法还包括生成用于调试电路的逻辑,该调试电路包括用于对指示的调试数据进行提取的电路。例如,可以接收单元名称、实例名称、信号和/或变量的列表,并使用该列表生成调试电路,该调试电路包括用于提取指示的调试数据的逻辑。例如,可以添加触发器以根据触发器或时钟电路的上升沿或下降沿从信号列表捕获信号。在一些示例中,可以重新配置调试电路(诸如虚拟调试单元内的调试电路)以捕获不同的调试数据,而无需重新编程应用逻辑部。在一些示例中,可以通过仅重新编程虚拟调试单元的调试电路部来重新配置调试电路以捕获不同的调试数据。在一些示例中,将主机计算机配置为执行具有高特权级别和低特权级别的进程。通过以低特权级别在主机上执行的进程来启动对用于提供用户应用逻辑的第一部分逻辑进行编程,并且通过以高特权级别在主机上执行的进程来启动对第二部分逻辑(例如,主机逻辑310)进行编程。
图8是概述了如可以在所公开的技术的某些示例中执行的,调试应用电路的示例性方法的流程图800。
在处理块810,将应用逻辑的用户描述发送到包括主机逻辑部和应用逻辑部的可重新配置逻辑器件。将可重新配置逻辑器件配置为使得仅与应用逻辑的特定部分关联的用户进程可以访问应用逻辑电路的调试数据。例如,可以将应用逻辑分配给由享有特权的主机逻辑部指定的通信通道或信道,以便强制应用逻辑分区之间的分离。
在处理块820,合成应用逻辑,以包括调试单元以及使用合成应用逻辑和调试单元编程的可重新配置逻辑器件。例如,可以将调试单元的描述与应用逻辑一起合成,以便包括调试单元。在其他示例中,应用逻辑实例化描述调试单元的单元。在其他示例中,调试单元至少部分地包括在主机逻辑部中。
在处理块830,主机计算机上的用户分区用于控制可重新配置逻辑器件上的应用逻辑的操作。例如,用户分区可以通过打开或关闭时钟或其他控制信号来开始和停止电路的训练,以开始和停止由应用逻辑执行的操作。
在处理块840,从位于主机计算机的用户分区处的可重新配置逻辑接收调试数据。在一些示例中,通过被配置为仅发送数据的通信信道将调试数据直接发送到用户主机分区。在其他示例中,可重新配置逻辑器件的主机部监督和控制如何将数据从特定的应用逻辑部发送到主机计算机上的用户主机分区。标准或专有格式可以用于经由流或经由文件(包括FSDB或VCD文件)将数据发送到主机,该文件描述由调试数据捕获的由应用逻辑生成的波形值变化。
在处理块850,用户可以使用在主机计算机上执行的合适应用来查看和/或分析接收到的调试数据。例如,可以使用波形查看器、模拟器或其他合适的工具来查看和分析接收到的调试数据。在一些示例中,可编程逻辑器件的主机部包括逻辑分析器,其被配置为从可编程逻辑器件的应用部接收调试数据。在一些示例中,首先使用在主机计算机上执行的管理员级别进程来接收调试数据,并且将至少一部分调试数据从管理员级别进程发送到在主机计算机上执行的用户级别进程。管理员级别进程确保仅将调试数据发送到授权的用户级别进程。在一些示例中,在处理块850执行的动作包括分析由调试电路生成的信号波形、计数器值或触发器数据。在一些示例中,该方法还包括将调试数据发送到调试电路,以便改变应用电路的状态值。例如,诸如寄存器或触发器等状态元件可以通过使用调试电路来强制值以改变自己的状态值。
图9是基于网络的计算服务提供者900的计算系统网,其图示了可以使用这里所述的示例的一个环境。作为背景,计算服务提供者900(例如,云服务提供者)能够将计算和存储容量作为服务传递到终端接收者的社区。在一些示例中,可以由组织或代表组织为组织建立计算服务提供者。即,计算服务提供者900可以提供“专用云环境”。在另一示例中,计算服务提供者900支持多租户环境,其中多个客户独立操作(例如,公共云环境)。一般而言,计算服务提供者900可以提供以下模型:基础设施即服务(“IaaS”),平台即服务(“PaaS”),和/或软件即服务(“SaaS”)。可以提供其他模型。对于IaaS模型,计算服务提供者900可以将计算机提供为物理或虚拟机及其他资源。虚拟机可以由管理程序作为客户运行,如下面进一步说明。PaaS模型提供一种计算平台,该平台可以包括操作系统、编程语言执行环境、数据库和web服务器。应用开发人员可以在计算服务提供者平台上开发和运行它们的软件解决方案,而无需购买和管理底层硬件和软件的成本。此外,应用开发人员可以在计算服务提供者平台的可配置硬件上开发和运行它们的硬件解决方案。SaaS模型允许在计算服务提供者中安装和操作应用软件。在一些示例中,终端用户使用联网的客户端设备访问计算服务提供者900,该客户端设备例如是运行web浏览器或其他轻量客户端应用的台式计算机、膝上计算机、平板电脑、智能手机等。本领域技术人员将认识到,计算服务提供者900可以被描述为“云”环境。
计算服务提供者900图示的特殊情况包括多个服务器计算机902A至902C。虽然仅示出了三个服务器计算机,但是可以使用任何数量,且大型中心可以包括数千台服务器计算机。服务器计算机902A至902C可以提供用于执行软件实例906A至906C的计算资源。在一个示例中,软件实例906A至906C是虚拟机。如本领域已知,虚拟机是像物理机器一样执行应用的机器(即,计算机)的软件实现的实例。在虚拟机的示例中,服务器902A至902C中的每一个均可以被配置为执行管理程序908或其他类型的程序,该程序被配置为使得能够在单个服务器上执行多个软件实例906。此外,每个软件实例906可以被配置为执行一个或多个应用。
应理解,尽管主要在虚拟机的环境中说明了这里公开的示例,但是可以使用与这里公开的概念和技术一起的其他类型的实例。例如,这里公开的技术可以与存储资源、数据通信资源和其他类型的计算资源一起使用。这里公开的示例也可以在不使用虚拟机实例的情况下直接在计算机系统上执行所有或部分的应用。
服务器计算机902A至902C可以包括不同硬件资源或实例类型的异构集合。硬件实例类型中的一些可以包括可配置硬件,该可配置硬件至少部分地可由计算服务提供者900的用户配置。实例类型的一个示例可以包括服务器计算机902A,该服务器计算机902A与可配置硬件904A通信。具体地,服务器计算机902A和可配置硬件904A可以通过例如PCIe等本地互连进行通信。实例类型的另一示例可以包括服务器计算机902B和可配置硬件904B。例如,可配置逻辑904B可以集成在多芯片模块内或在与服务器计算机902B的CPU同一管芯上。实例类型的又一示例可以包括不具有可配置硬件的服务器计算器902C。因此,具有和不具有可配置逻辑的硬件实例类型可以存在于计算服务提供者900的资源内。
可以预留一个或多个服务器计算机920,以用于执行对服务器计算机902和软件实例906的操作进行管理的软件组件。例如,服务器计算机920可以执行管理组件922。客户可以访问管理组件922以配置由客户购买的软件实例906的操作的各个方面。例如,客户可以购买、出租或租赁实例,并且对软件实例的配置进行更改。每个软件实例的配置信息可以作为机器映像(MI)942存储在网络附连存储器940上。具体地,MI 942描述用于启动VM实例的信息。MI可以包括用于实例的根卷的模板(例如,OS和应用),用于控制哪些客户账户可以使用MI的启动许可,和块设备映射,该块设备映射指定当启动实例时附连到实例的卷。MI也可以包括对可配置硬件映像(CHI)944的引用,其在当启动实例时加载到可配置硬件904上。CHI包括用于对可配置硬件904的至少一部分进行编程或配置的配置数据。
客户也可以指定有关如何根据需求来缩放购买的实例的设置。管理组件还可以包括用于实现客户策略的策略文档。自动缩放组件924可以根据客户定义的规则来缩放实例906。在一个实施例中,自动缩放组件924允许客户指定用于确定何时应当实例化新实例的放大规则和用于确定何时应当终止现有实例的缩小规则。自动缩放组件924可以由在不同的服务器计算机902或其他计算设备上执行的许多子组件组成。自动缩放组件924可以通过内部管理网络监视可用的计算资源,并且根据需要来修改可用的资源。
部署组件926可以用于帮助客户部署计算资源的新实例906。部署组件可以访问与实例关联的账户信息,例如谁是账户的所有者、信用卡信息、所有者的国家等。部署组件926可以接收来自客户的配置,该配置包括描述了应当如何配置新实例906的数据。例如,该配置可以指定待被安装在新实例906中的一个或多个应用,提供为配置新实例906而待被执行的脚本和/或其他类型的代码,提供指定应当如何准备应用缓存的缓存逻辑,以及提供其他类型的信息。部署组件926可以利用客户提供的配置和缓存逻辑来配置、准备好和启动新实例906。配置、缓存逻辑和其他信息可以由客户使用管理组件922或通过将该信息直接提供给部署组件926来指定。实例管理器可以被视为部署组件的一部分。
客户账户信息928可以包括与多租户环境的客户关联的任何期望的信息。例如,客户账户信息可以包括客户的唯一标识符,客户地址,账单信息,许可信息,用于启动实例的定制参数,调度信息,自动缩放参数,用于访问账户的先前IP地址,可供客户访问的MI和CHI的列表,等等。
可以预留一个或多个服务器计算机930,以用于执行对配置数据到服务器计算机902的可配置硬件904的下载进行管理的软件组件。例如,服务器计算机930可以执行逻辑仓储服务,其包括摄取组件932、库管组件934和下载组件936。摄取组件932可以接收主机逻辑和应用逻辑设计或规范,并且生成可以用于配置可配置硬件904的配置数据。库管组件934可以用于管理与逻辑仓储服务关联的源代码、用户信息和配置数据。例如,库管组件934可以用于将由用户的设计生成的配置数据存储在网络附连存储器940上的由用户指定的位置中。特别地,配置数据可以存储在网络附连存储器940上的可配置硬件映像944内。此外,库管组件934可以管理输入文件(例如,应用逻辑和主机逻辑的规范)的版本化和存储,以及关于逻辑设计和/或逻辑仓储服务的用户的元数据。库管组件934可以通过一个或多个属性来索引生成的配置数据,该属性例如是用户标识符、实例类型、市场标识符、机器映像标识符和可配置硬件标识符等。下载组件936可以用于认证对配置数据的请求,并且用于当请求被认证时将配置数据发送到请求者。例如,当启动使用可配置硬件904的实例906时,服务器计算机902A至B上的代理可以将请求发送到下载组件936。作为另一示例,当可配置硬件904处于操作中,实例906请求部分地重新配置可配置硬件904时,服务器计算机902A至B上的代理可以将请求发送到下载组件936。
网络附连存储器(NAS)940可以用于提供存储空间和对存储在NAS 940上的文件的访问。例如,NAS 940可以包括用于使用诸如网络文件系统(NFS)等网络文件共享协议处理请求的一个或多个服务器计算机。NAS 940可以包括可移动或不可移动介质,其包括磁盘,存储区域网络(SAN),独立盘冗余阵列(RAID),磁带或录像带,CD-ROM,DVD,或可以用于以非临时方式存储信息且可以通过网络950而被访问的任何其他介质。
网络950可以用于将服务器计算机902A至902C、服务器计算机920、930和存储器940进行互连。网络950可以是局域网(LAN),并且可以连接到广域网(WAN)960,使得终端用户可以访问计算服务提供者900。应理解,图9所示的网络拓扑已经简化,且更多的网络和网络连接设备可以用于互连这里公开的各种计算系统。
图10描述了可以实现上述创新的合适的计算环境1000的一般化示例。计算环境1000不是为了对使用范围或功能提出任何限制,因为创新可以在不同的通用或专用计算系统中实现。例如,计算环境1000可以是各种计算设备中的任一者(例如,台式计算机、膝上计算机、服务器计算机、平板计算机等)。
参照图10,计算环境1000包括一个或多个处理单元1010、1015和存储器1020、1025。在图10中,该基本配置1030包括在虚线内。处理单元1010、1015执行计算机可执行指令。处理单元可以是通用中央处理单元(CPU),专用集成电路(ASIC)中的处理器,或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令来增加处理能力。例如,图10示意了中央处理单元1010以及图形处理单元或协作处理单元1015。有形存储器1020、1025可以是可由处理单元访问的易失性存储器(例如,寄存器、缓存器、RAM)、非易失性存储器(例如,ROM,EEPROM,闪存等)或两者的某种组合。存储器1020、1025以适合于处理单元执行的计算机可执行指令的形式存储实现这里所述的一个或多个创新的软件1080。
计算系统可以具有额外的特征。例如,计算环境1000包括存储器1040,一个或多个输入设备1050,一个或多个输出设备1060,和一个或多个通信连接1070。诸如总线、控制器或网络等互连机制(未示出)将计算环境1000的组件进行互连。通常,操作系统软件(未示出)为在计算环境1000中执行的其他软件提供操作环境,并且协调计算环境1000的组件的活动。
有形存储器1040可以是可移动或不可移动的,并且包括磁盘,磁带或录像带,CD-ROM,DVD,或可以用于以非临时方式存储信息且可以在计算环境1000内被访问的任何其他介质。存储器1040存储用于软件1080的指令,该软件1080实现这里所述的一个或多个创新。
输入设备1050可以是触摸输入设备(例如,键盘、鼠标、笔或轨迹球)、声音输入设备、扫描设备或将输入提供给计算环境1000的其他设备。输出设备1060可以是显示器、打印机、扬声器、CD刻录机或从计算环境1000提供输出的其他设备。
通信连接1070能够通过通信介质与另一计算实体进行通信。通信介质传送调制的数据信号中的信息,例如计算机可执行指令,音频或视频输入或输出,或其他数据。调制的数据信号是以对信号中的信息进行编码的方式来使其特征中的一个或多个特征被设置或被改变了的信号。作为示例而非限制,通信介质可以使用电、光、RF或其他载体。
尽管为了方便呈现,以特定的顺序次序说明了所公开的一些方法的操作,但是应理解,该说明方式涵盖重新布置,除非下面阐述的特定语言要求特定的排序。例如,在一些情况下,顺序说明的操作可以重新布置或同时执行。此外,为了简单起见,附图可能未示意所公开的方法可以与其他方法结合使用的各种方式。
所公开的任何方法可以实现为存储在一个或多个计算机可读存储介质(例如,一个或多个光介质盘,易失性存储组件(例如,DRAM或SRAM)或非易失性存储组件(例如,闪存或硬盘驱动器))上且在计算机(例如,任何商用计算机,其包括:智能手机或具有计算硬件的其他移动设备)上执行的计算机可执行指令。术语计算机可读存储介质不包括通信连接,例如信号和载波。用于实现公开的技术的任何计算机可执行指令以及在实现公开的示例的期间创建和使用的任何数据可以存储在一个或多个计算机可读存储介质上。计算机可执行指令例如可以是专用软件应用或经由web浏览器或其他软件应用(例如,远程计算应用)可访问或可下载的软件应用的一部分。该软件例如可以在单个本地计算机(例如,任何合适的商用计算机)上或在使用一个或多个网络计算机的网络环境(例如,经由因特网,广域网,局域网,客户端服务器网络(例如,云计算网络),或其他类似网络)中执行。
为了清楚起见,仅说明了基于软件的实现方式的某些选定方面。省略了本领域公知的其他细节。例如,应理解,公开的技术不限于任何特定计算机语言或程序。例如,公开的技术可以通过以C++、Java、Perl、JavaScript、Adobe Flash或任何其他合适的编程语言编写的软件来实现。同样,公开的技术不限于任何特殊的计算机或硬件类型。合适的计算机和硬件的某些细节是公知的,并且不需要在本发明中详细阐述。
也应很好理解,这里所述的任何功能可以至少部分地由一个或多个硬件逻辑组件而不是软件来执行。例如但是不限于,可以使用的硬件逻辑组件的说明性的类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。
此外,可以通过合适的通信方式上传、下载或远程访问任何基于软件的示例(例如,包括用于使计算机执行所公开的任何方法的计算机可执行指令)。该合适的通信方式例如包括因特网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信或其他类似通信方式。
可以根据以下条款说明本发明的各种实施例:
1.一种系统,其包括:计算主机,所述计算主机包括:
一个或多个处理器,所述处理器被配置为执行管理员进程和两个或更多个用户进程;和
单个现场可编程门阵列(FPGA),所述FPGA被配置为多个逻辑器件部分,所述多个逻辑器件部分包括:
主机逻辑分区,所述主机逻辑分区只可由所述计算主机上执行的所述管理员进程访问,
两个或更多个通信通道,每个通信通道被配置为与所述用户进程中的相应一个进行通信,和
两个或更多个加速器分区,每个加速器分区被配置为包括逻辑分析器,所述逻辑分析器收集由相应的加速器分区内的逻辑生成的逻辑信号并且将指示所述逻辑信号的值的调试数据经由所述通信通道中的相关联的一个发送到所述用户进程中的相应一个。
2.如条款1所述的系统,其中,所述调试数据经由所述主机逻辑分区发送到所述计算主机。
3.如前述任一条款所述的系统,其中,所述通信通道包括存储器映射的接口总线。
4.如前述任一条款所述的系统,其中,用于配置所述加速器分区的硬件描述语言(HDL)规范包括所述加速器逻辑的HDL描述内实例化的虚拟调试单元,所述虚拟调试单元包括所述逻辑分析器。
5.一种系统,其包括:
主机计算设备,所述主机计算设备执行特权主机分区和一个或多个用户分区;和
可重新配置逻辑器件,所述可重新配置逻辑器件具有被编程为包括一个或多个应用逻辑单元的可重新配置逻辑,每个应用逻辑单元被配置为经由分配的通信通道将通过操作相应应用逻辑单元而生成的调试数据传送到所述用户分区的一个不同的相应用户分区。
6.如条款1所述的系统,其中,所述可重新配置逻辑器件还包括用于管理所述应用逻辑单元的操作的主机逻辑,所述主机逻辑由以比所述用户分区的特权级别高的在所述主机计算设备上执行的管理员分区控制。
7.如条款2所述的系统,其中,所述应用逻辑单元经由不由所述主机逻辑管理的网络接口与所述主机计算设备进行通信。
8.如条款6或7所述的系统,其中,所述应用逻辑单元经由所述主机逻辑提供的独立通信信道与所述主机计算设备进行通信。
9.如条款6至8中任一项所述的系统,其中,所述主机逻辑经由管理员特权通信信道发送用于所述应用逻辑单元中的两个或更多个的调试数据。
10.如条款6至9中任一项所述的系统,其中,所述应用逻辑单元的至少一者还包括逻辑分析器,所述逻辑分析器被配置为通过对所述应用逻辑单元的所述至少一者内的逻辑信号进行采样来生成所述调试数据的信号值。
11.如条款6至9中任一项所述的系统,其中,所述主机逻辑允许由所述应用逻辑单元的一个生成的调试数据被所述主机计算设备上的其他用户分区访问。
12.如条款5至11中任一项所述的系统,其中,所述用户分区中的每个在所述主机计算设备的不同虚拟机中执行。
13.如条款5至12中任一项所述的系统,其中,所述调试数据包括下列的一者或多者:信号值;存储在所述可重新配置逻辑器件的存储器中的值;存储在耦接到所述可重新配置逻辑器件的存储器中的值;事件计数器值;和触发值。
14.如条款5至13中任一项所述的系统,其中,所述调试数据由配置在所述可重新配置逻辑器件中的下列组件的一者或多者生成:耦接以捕获由所述加速器逻辑生成的值的逻辑探针;捕获由所述加速器逻辑使用触发器生成的值的逻辑探针;事件计数器;能量计数器;扫描输出值;和通过设置断点生成的中断、嵌入式FPGA存储器或耦接到所述可重新配置逻辑器件的存储设备。
15.如条款5至14中任一项所述的系统,其中,所述可重新配置器件还包括被配置为使用下列组件的一者或多者来修改所述应用逻辑单元中的信号值的电路:扫描单元输入;强制状态元件值;重置或设置事件计数器到规定值;和设置中断断点。
16.一种方法,其包括:
对可编程逻辑器件的第一部分进行编程,以提供包括应用电路和调试电路的电路,所述应用电路被配置为生成数据并将所述数据发送到由主机计算机执行的应用进程,所述调试电路耦接到所述应用电路并被配置为捕获通过训练所述应用电路而生成的调试数据;和
对所述可编程逻辑器件的主机部进行编程,以提供与主机计算机的接口,所述接口被配置为将所述调试数据发送到所述调试电路和/或从所述调试电路接收调试数据到所述主机计算机,所述可编程逻辑器件的主机部可由所述主机计算机上执行的比所述应用进程的特权级别高的进程访问,所述主机部不可由所述主机计算机上执行的应用进程访问。
17.如条款10所述的方法,其中,所述应用电路是第一应用电路,且所述调试电路是第一调试电路,所述方法还包括:在对所述主机部和所述第一应用电路进行编程之后,
对所述可编程逻辑器件的第一部分重新编程,以提供不同的第二电路,所述第二电路包括第二应用电路和第二调试电路,所述主机部的接口被配置为将调试数据从所述第二调试电路传输到所述主机计算机,而无需对所述主机部进行重新编程。
18.如条款10或17所述的方法,还包括通过以下方式生成所述调试电路:
接收包括所述调试电路的实例化的所述应用电路的用户描述;和
合成用于所述应用电路和所述调试电路的逻辑,合成的逻辑用于配置所述可编程逻辑器件的第一部分。
19.如条款16至18中任一项所述的方法,还包括通过以下方式生成所述调试电路:
接收所述应用电路的用户描述和将要从所述应用电路提取的调试数据的指示;和
生成用于所述调试电路的逻辑,所述调试电路包括用于对指示的调试数据进行提取的电路。
20.如条款16至19中任一项所述的方法,还包括动态地重新配置所述调试电路以捕获不同的调试数据,而无需对所述可编程逻辑器件的第一部分进行重新编程。
21.如条款16至20中任一项所述的方法,其中:
所述主机计算机能够执行具有高特权级别和低特权级别的进程;
通过以所述低特权级别在所述主机上执行的进程来启动对所述第一部分进行编程;且
通过以所述高特权级别在所述主机上执行的进程来启动对所述主机部进行编程。
22.如条款16至21中任一项所述的方法,还包括:
操作所述应用电路,并从所述主机计算机接收来自所述调试电路的调试数据。
23.如条款16至22中任一项所述的方法,还包括:使用耦接到所述主机计算机的显示器查看来自所述调试电路的调试数据。
24.如条款16至23中任一项所述的方法,其中,所述可编程逻辑器件的主机部包括逻辑分析器,所述逻辑分析器被配置为从所述可编程逻辑器件的第一部分接收所述调试数据。
25.如条款16至24中任一项所述的方法,还包括:
通过所述主机计算机上执行的管理员级别进程来接收所述调试数据;和
将所述调试数据的至少一部分发送到所述主机计算机上执行的用户级别进程,其中,所述管理员级别进程确保所述调试数据仅被发送到授权的用户级别进程。
26.如条款16至25中任一项所述的方法,还包括:利用所述主机计算机分析由所述调试电路生成的信号波形、计数器或触发器数据。
27.如条款16至26中任一项所述的方法,还包括:利用所述主机计算机将调试数据发送到所述调试电路以改变所述应用电路中的状态值。
所公开的方法、装置和系统不应被理解为以任何方式进行限制。相反,本发明针对以单独方式和以彼此之间各种组合和次组合方式公开的各种实施例的所有新颖和非显而易见的特征和方面。所公开的方法、装置和系统不限于任何特定的方面或特征或它们的组合,所公开的实施例也不要求存在任何一个或多个特定优势或解决任何一个或多个特定问题。
鉴于可以应用所公开的发明原理的许多可能的实施例,应认识到,所述的实施例仅是优选示例,且不应被视为将权利要求的范围限制于这些优选示例。相反,权利要求主张的主题的范围由随附的权利要求限定。因此,申请人主张该权利要求范围内的所有发明都作为申请人的发明。
Claims (15)
1.一种系统,其包括:
主机计算设备,所述主机计算设备执行特权主机分区和一个或多个用户分区;和
可重新配置逻辑器件,所述可重新配置逻辑器件具有被编程为包括一个或多个应用逻辑单元的可重新配置逻辑,每个应用逻辑单元被配置为经由分配的通信通道将通过操作相应应用逻辑单元而生成的调试数据传送到用户分区的一个不同的相应用户分区。
2.如权利要求1所述的系统,其中,所述可重新配置逻辑器件还包括用于管理所述应用逻辑单元的操作的主机逻辑,所述主机逻辑由以比所述用户分区的特权级别高的在所述主机计算设备上执行的管理员分区控制。
3.如权利要求2所述的系统,其中,所述应用逻辑单元经由不由所述主机逻辑管理的网络接口与所述主机计算设备进行通信。
4.如权利要求2或3所述的系统,其中,所述应用逻辑单元经由所述主机逻辑提供的独立通信信道与所述主机计算设备进行通信。
5.如权利要求2至4中任一项所述的系统,其中,所述主机逻辑经由管理员特权通信信道发送用于所述应用逻辑单元中的两个或更多个的调试数据。
6.如权利要求2至5中任一项所述的系统,其中,所述应用逻辑单元的至少一者还包括逻辑分析器,所述逻辑分析器被配置为通过对至少一个应用逻辑单元内的逻辑信号进行采样来生成所述调试数据的信号值。
7.如权利要求2至6中任一项所述的系统,其中,所述主机逻辑允许由所述应用逻辑单元的一个生成的调试数据被所述主机计算设备上的其他用户分区访问。
8.如前述任一权利要求所述的系统,其中,所述用户分区中的每个在所述主机计算设备的不同虚拟机中执行。
9.如前述任一权利要求所述的系统,其中,所述可重新配置器件还包括被配置为使用下列组件的一者或多者来修改所述应用逻辑单元中的信号值的电路:扫描单元输入;强制状态元件值;重置或设置事件计数器到规定值;和设置中断断点。
10.一种方法,其包括:
对可编程逻辑器件的第一部分进行编程,以提供包括应用电路和调试电路的电路,所述应用电路被配置为生成数据并将所述数据发送到由主机计算机执行的应用进程,所述调试电路耦接到所述应用电路并被配置为捕获通过训练所述应用电路而生成的调试数据;和
对所述可编程逻辑器件的主机部进行编程,以提供与主机计算机的接口,所述接口被配置为将所述调试数据发送到所述调试电路和/或从所述调试电路接收调试数据到所述主机计算机,所述可编程逻辑器件的主机部可由所述主机计算机上执行的比所述应用进程的特权级别高的进程访问,所述主机部不可由所述主机计算机上执行的应用进程访问。
11.如权利要求10所述的方法,其中,所述应用电路是第一应用电路,且所述调试电路是第一调试电路,所述方法还包括:在对所述主机部和所述第一应用电路进行编程之后,
对所述可编程逻辑器件的第一部分重新编程,以提供不同的第二电路,所述第二电路包括第二应用电路和第二调试电路,所述主机部的接口被配置为将调试数据从所述第二调试电路传输到所述主机计算机,而无需对所述主机部进行重新编程。
12.如权利要求10或11所述的方法,还包括通过以下方式生成所述调试电路:
接收包括所述调试电路的实例化的所述应用电路的用户描述;和
合成用于所述应用电路和所述调试电路的逻辑,合成的逻辑用于配置所述可编程逻辑器件的第一部分。
13.如权利要求10至12中任一项所述的方法,还包括通过以下方式生成所述调试电路:
接收所述应用电路的用户描述和将要从所述应用电路提取的调试数据的指示;和
生成用于所述调试电路的逻辑,所述调试电路包括用于对指示的调试数据进行提取的电路。
14.如权利要求10至13中任一项所述的方法,还包括动态地重新配置所述调试电路以捕获不同的调试数据,而无需对所述可编程逻辑器件的第一部分进行重新编程。
15.如权利要求10至14中任一项所述的方法,其中,所述可编程逻辑器件的主机部包括逻辑分析器,所述逻辑分析器被配置为从所述可编程逻辑器件的第一部分接收所述调试数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/279,276 | 2016-09-28 | ||
US15/279,276 US10338135B2 (en) | 2016-09-28 | 2016-09-28 | Extracting debug information from FPGAs in multi-tenant environments |
PCT/US2017/054171 WO2018064412A1 (en) | 2016-09-28 | 2017-09-28 | Extracting debug information from fpgas in multi-tenant environments |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109791518A true CN109791518A (zh) | 2019-05-21 |
CN109791518B CN109791518B (zh) | 2022-06-14 |
Family
ID=60083492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780060407.5A Active CN109791518B (zh) | 2016-09-28 | 2017-09-28 | 包含可配置逻辑平台的服务器计算机的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10338135B2 (zh) |
EP (1) | EP3519968B1 (zh) |
JP (1) | JP6814299B2 (zh) |
CN (1) | CN109791518B (zh) |
WO (1) | WO2018064412A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737155A (zh) * | 2020-08-04 | 2020-10-02 | 北京燧原智能科技有限公司 | 一种芯片调试系统、方法、装置、设备及存储介质 |
CN112860332A (zh) * | 2019-11-12 | 2021-05-28 | 广东高云半导体科技股份有限公司 | 通过无线通信块对fpga编程及验证的方法 |
CN113485168A (zh) * | 2020-03-16 | 2021-10-08 | 莱卡微系统Cms有限责任公司 | 用于操作系统的控制系统和方法 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10152566B1 (en) * | 2016-09-27 | 2018-12-11 | Altera Corporation | Constraint based bit-stream compression in hardware for programmable devices |
US10338135B2 (en) | 2016-09-28 | 2019-07-02 | Amazon Technologies, Inc. | Extracting debug information from FPGAs in multi-tenant environments |
US11099894B2 (en) | 2016-09-28 | 2021-08-24 | Amazon Technologies, Inc. | Intermediate host integrated circuit between virtual machine instance and customer programmable logic |
US10795742B1 (en) | 2016-09-28 | 2020-10-06 | Amazon Technologies, Inc. | Isolating unresponsive customer logic from a bus |
US10223317B2 (en) * | 2016-09-28 | 2019-03-05 | Amazon Technologies, Inc. | Configurable logic platform |
US10250572B2 (en) | 2016-09-29 | 2019-04-02 | Amazon Technologies, Inc. | Logic repository service using encrypted configuration data |
US10162921B2 (en) | 2016-09-29 | 2018-12-25 | Amazon Technologies, Inc. | Logic repository service |
US10282330B2 (en) | 2016-09-29 | 2019-05-07 | Amazon Technologies, Inc. | Configurable logic platform with multiple reconfigurable regions |
US10423438B2 (en) | 2016-09-30 | 2019-09-24 | Amazon Technologies, Inc. | Virtual machines controlling separate subsets of programmable hardware |
US10642492B2 (en) | 2016-09-30 | 2020-05-05 | Amazon Technologies, Inc. | Controlling access to previously-stored logic in a reconfigurable logic device |
US11115293B2 (en) | 2016-11-17 | 2021-09-07 | Amazon Technologies, Inc. | Networked programmable logic service provider |
US11487585B1 (en) * | 2016-12-14 | 2022-11-01 | Xilinx, Inc. | Dynamic load balancing and configuration management for heterogeneous compute accelerators in a data center |
US11474555B1 (en) * | 2017-08-23 | 2022-10-18 | Xilinx, Inc. | Data-driven platform characteristics capture and discovery for hardware accelerators |
US10528768B2 (en) * | 2017-09-15 | 2020-01-07 | Intel Corporation | Methods and apparatus to provide user-level access authorization for cloud-based field-programmable gate arrays |
US10599553B2 (en) * | 2018-04-27 | 2020-03-24 | International Business Machines Corporation | Managing cloud-based hardware accelerators |
US11144357B2 (en) | 2018-05-25 | 2021-10-12 | International Business Machines Corporation | Selecting hardware accelerators based on score |
US10977098B2 (en) | 2018-08-14 | 2021-04-13 | International Business Machines Corporation | Automatically deploying hardware accelerators based on requests from users |
US10892944B2 (en) | 2018-11-29 | 2021-01-12 | International Business Machines Corporation | Selecting and using a cloud-based hardware accelerator |
US10831975B2 (en) | 2018-11-29 | 2020-11-10 | International Business Machines Corporation | Debug boundaries in a hardware accelerator |
US11120188B2 (en) * | 2019-01-28 | 2021-09-14 | King Fahd University Of Petroleum And Minerals | FPGA virtualization |
CN109976876B (zh) * | 2019-03-20 | 2021-11-16 | 联想(北京)有限公司 | 加速器管理方法和装置 |
CN110069827B (zh) * | 2019-03-28 | 2020-02-21 | 广东高云半导体科技股份有限公司 | Fpga在线逻辑分析仪的布局布线方法与装置 |
US20210303315A1 (en) * | 2020-03-31 | 2021-09-30 | Src Labs, Llc | Application logic architecture defining separate processing planes |
US20210365591A1 (en) * | 2020-05-22 | 2021-11-25 | Intel Corporation | Secure debug of fpga design |
US10949586B1 (en) * | 2020-07-01 | 2021-03-16 | Xilinx, Inc. | Post-synthesis insertion of debug cores |
US20220166762A1 (en) * | 2020-11-25 | 2022-05-26 | Microsoft Technology Licensing, Llc | Integrated circuit for obtaining enhanced privileges for a network-based resource and performing actions in accordance therewith |
US20220321403A1 (en) * | 2021-04-02 | 2022-10-06 | Nokia Solutions And Networks Oy | Programmable network segmentation for multi-tenant fpgas in cloud infrastructures |
CN115544069B (zh) * | 2022-09-26 | 2023-06-20 | 山东浪潮科学研究院有限公司 | 一种可重构数据库查询加速处理器及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050196025A1 (en) * | 2004-03-05 | 2005-09-08 | Nortel Networks Limited | Method and apparatus for processing medical image data in a network environment |
CN104516769A (zh) * | 2013-10-01 | 2015-04-15 | 国际商业机器公司 | 动态逻辑分区的验证 |
CN105787164A (zh) * | 2016-02-19 | 2016-07-20 | 深圳市同创国芯电子有限公司 | 一种用于可编程逻辑器件的调试方法及系统 |
Family Cites Families (140)
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 |
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 |
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設計プログラム |
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 |
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 |
US20050198235A1 (en) | 2004-01-29 | 2005-09-08 | Arvind Kumar | Server configuration and management |
US7243221B1 (en) | 2004-02-26 | 2007-07-10 | Xilinx, Inc. | Method and apparatus for controlling a processor in a data processing system |
US7281082B1 (en) | 2004-03-26 | 2007-10-09 | Xilinx, Inc. | Flexible scheme for configuring programmable semiconductor devices using or loading programs from SPI-based serial flash memories that support multiple SPI flash vendors and device families |
US20050223227A1 (en) | 2004-03-31 | 2005-10-06 | Deleeuw William C | Addressable authentication in a scalable, reconfigurable communication architecture |
US7721036B2 (en) | 2004-06-01 | 2010-05-18 | Quickturn Design Systems Inc. | System and method for providing flexible signal routing and timing |
US7987373B2 (en) | 2004-09-30 | 2011-07-26 | Synopsys, Inc. | Apparatus and method for licensing programmable hardware sub-designs using a host-identifier |
US8621597B1 (en) | 2004-10-22 | 2013-12-31 | Xilinx, Inc. | Apparatus and method for automatic self-erasing of programmable logic devices |
US8458467B2 (en) | 2005-06-21 | 2013-06-04 | Cisco Technology, Inc. | Method and apparatus for adaptive application message payload content transformation in a network infrastructure element |
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 | 論理プログラマブルデバイス保護回路 |
US7715433B2 (en) | 2006-07-14 | 2010-05-11 | Boren Gary W | Universal controller and signal monitor |
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 |
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 |
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 |
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 |
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 | 日本電気株式会社 | 再構成可能な論理回路 |
US8560758B2 (en) | 2009-08-24 | 2013-10-15 | Red Hat Israel, Ltd. | Mechanism for out-of-synch virtual machine memory management optimization |
US8626970B2 (en) | 2010-06-23 | 2014-01-07 | International Business Machines Corporation | Controlling access by a configuration to an adapter function |
US8516272B2 (en) | 2010-06-30 | 2013-08-20 | International Business Machines Corporation | Secure dynamically reconfigurable logic |
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 | 日本電信電話株式会社 | データ処理システム |
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 |
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 |
US9766910B1 (en) | 2013-03-07 | 2017-09-19 | Amazon Technologies, Inc. | Providing field-programmable devices in a distributed execution environment |
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 |
WO2015026373A1 (en) | 2013-08-23 | 2015-02-26 | Empire Technology Development, Llc | Detacenter-based hardware accelerator integration |
WO2015030731A1 (en) | 2013-08-27 | 2015-03-05 | Empire Technology Development Llc | Speculative allocation of instances |
US9098662B1 (en) * | 2013-08-28 | 2015-08-04 | Altera Corporation | Configuring a device to debug systems in real-time |
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 |
US9851998B2 (en) | 2014-07-30 | 2017-12-26 | Microsoft Technology Licensing, Llc | Hypervisor-hosted virtual machine forensics |
US10230591B2 (en) | 2014-09-30 | 2019-03-12 | Microsoft Technology Licensing, Llc | Network resource governance in multi-tenant datacenters |
US9672935B2 (en) | 2014-10-17 | 2017-06-06 | Lattice Semiconductor Corporation | Memory circuit having non-volatile memory cell and methods of using |
US9372956B1 (en) | 2014-11-10 | 2016-06-21 | Xilinx, Inc. | Increased usable programmable device dice |
US10394731B2 (en) | 2014-12-19 | 2019-08-27 | Amazon Technologies, Inc. | System on a chip comprising reconfigurable resources for multiple compute sub-systems |
US9703703B2 (en) * | 2014-12-23 | 2017-07-11 | Intel Corporation | Control of entry into protected memory views |
WO2016118978A1 (en) | 2015-01-25 | 2016-07-28 | Objective Interface Systems, Inc. | A multi-session zero client device and network for transporting separated flows to device sessions via virtual nodes |
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 |
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 |
US10402566B2 (en) | 2016-08-01 | 2019-09-03 | The Aerospace Corporation | High assurance configuration security processor (HACSP) for computing devices |
US10511589B2 (en) | 2016-09-14 | 2019-12-17 | Oracle International Corporation | Single logout functionality for a multi-tenant identity and data security management cloud service |
US10846390B2 (en) | 2016-09-14 | 2020-11-24 | Oracle International Corporation | Single sign-on functionality for a multi-tenant identity and data security management cloud service |
US10528765B2 (en) | 2016-09-16 | 2020-01-07 | Intel Corporation | Technologies for secure boot provisioning and management of field-programmable gate array images |
US11099894B2 (en) | 2016-09-28 | 2021-08-24 | Amazon Technologies, Inc. | Intermediate host integrated circuit between virtual machine instance and customer programmable logic |
US10223317B2 (en) | 2016-09-28 | 2019-03-05 | Amazon Technologies, Inc. | Configurable logic platform |
US10338135B2 (en) | 2016-09-28 | 2019-07-02 | Amazon Technologies, Inc. | Extracting debug information from FPGAs in multi-tenant environments |
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 |
US10162921B2 (en) | 2016-09-29 | 2018-12-25 | Amazon Technologies, Inc. | Logic repository service |
US10642492B2 (en) | 2016-09-30 | 2020-05-05 | Amazon Technologies, Inc. | Controlling access to previously-stored logic in a reconfigurable logic device |
US10423438B2 (en) | 2016-09-30 | 2019-09-24 | Amazon Technologies, Inc. | Virtual machines controlling separate subsets of programmable hardware |
US11023258B2 (en) | 2016-12-30 | 2021-06-01 | Intel Corporation | Self-morphing server platforms |
WO2019083991A1 (en) | 2017-10-23 | 2019-05-02 | Yuan Zhichao | SYSTEMS AND METHODS FOR DATA ENCRYPTION AND DECREASING BASED ON PROGRAMMABLE MATERIAL |
-
2016
- 2016-09-28 US US15/279,276 patent/US10338135B2/en active Active
-
2017
- 2017-09-28 EP EP17784139.2A patent/EP3519968B1/en active Active
- 2017-09-28 JP JP2019538113A patent/JP6814299B2/ja active Active
- 2017-09-28 CN CN201780060407.5A patent/CN109791518B/zh active Active
- 2017-09-28 WO PCT/US2017/054171 patent/WO2018064412A1/en unknown
-
2019
- 2019-05-24 US US16/422,725 patent/US11119150B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050196025A1 (en) * | 2004-03-05 | 2005-09-08 | Nortel Networks Limited | Method and apparatus for processing medical image data in a network environment |
CN104516769A (zh) * | 2013-10-01 | 2015-04-15 | 国际商业机器公司 | 动态逻辑分区的验证 |
CN105787164A (zh) * | 2016-02-19 | 2016-07-20 | 深圳市同创国芯电子有限公司 | 一种用于可编程逻辑器件的调试方法及系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860332A (zh) * | 2019-11-12 | 2021-05-28 | 广东高云半导体科技股份有限公司 | 通过无线通信块对fpga编程及验证的方法 |
CN113485168A (zh) * | 2020-03-16 | 2021-10-08 | 莱卡微系统Cms有限责任公司 | 用于操作系统的控制系统和方法 |
CN111737155A (zh) * | 2020-08-04 | 2020-10-02 | 北京燧原智能科技有限公司 | 一种芯片调试系统、方法、装置、设备及存储介质 |
CN111737155B (zh) * | 2020-08-04 | 2020-12-08 | 北京燧原智能科技有限公司 | 一种芯片调试系统、方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20190293715A1 (en) | 2019-09-26 |
CN109791518B (zh) | 2022-06-14 |
US11119150B2 (en) | 2021-09-14 |
EP3519968A1 (en) | 2019-08-07 |
US20180088174A1 (en) | 2018-03-29 |
EP3519968B1 (en) | 2022-02-16 |
US10338135B2 (en) | 2019-07-02 |
WO2018064412A1 (en) | 2018-04-05 |
JP6814299B2 (ja) | 2021-01-13 |
JP2019530941A (ja) | 2019-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109791518A (zh) | 从多租户环境中的fpga提取调试信息 | |
US11275503B2 (en) | Controlling access to previously-stored logic in a reconfigurable logic device | |
US11863406B2 (en) | Networked programmable logic service provider | |
US11704459B2 (en) | Logic repository service | |
CN109791508B (zh) | 具有多个可重配置区域的可配置逻辑平台 | |
CN109791536B (zh) | 可配置逻辑平台 | |
CN110998555B (zh) | 支持可适应性主机逻辑的逻辑仓储服务 | |
CN110088742A (zh) | 使用加密配置数据的逻辑储存库服务 | |
CN110520847A (zh) | 控制和状态信号的虚拟化 | |
CN110383246A (zh) | 虚拟机控制可编程硬件的单独子集 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |