CN110121709A - Fpga平台即服务(paas) - Google Patents
Fpga平台即服务(paas) Download PDFInfo
- Publication number
- CN110121709A CN110121709A CN201780074722.3A CN201780074722A CN110121709A CN 110121709 A CN110121709 A CN 110121709A CN 201780074722 A CN201780074722 A CN 201780074722A CN 110121709 A CN110121709 A CN 110121709A
- Authority
- CN
- China
- Prior art keywords
- fpga
- node
- application program
- stream
- mainboard
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3013—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/76—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
-
- 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
-
- 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/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/59—Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
-
- 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/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Quality & Reliability (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Microcomputers (AREA)
- Stored Programmes (AREA)
Abstract
FPGA PaaS使企业开发人员能够通过使用其市场组件,应用程序和流服务器轻松构建应用程序。FPGA PaaS为其FPGA PaaS企业开发人员提供了其功能。
Description
背景技术
高性能计算解决方案用于企业级应用中,以便以高速、高效和可靠的方式操作应用。例如,Google提供张量处理单元(Tensor Processing Unit,简称:TPU),这是一个专门为机器学习应用量身定制的专用集成电路。TPU(或TPU组)与其他通用处理器一起使用,以加速数据中心内机器学习工作负载的指定处理任务。可重新配置计算是利用高速计算结构(例如包括多个现场可编程门阵列(FPGA)的网络)提供信息高性能处理的另一种方法。与上面描述的方法类似,一种当前架构使用通用处理器和可重新配置的硬件处理器阵列作为加速器。微软的一种现有方法最初是作为Catapult项目开始的,该项目支持Bing搜索算法。通过将通用处理器与FPGA结合使用,微软已经报告了与处理算法相关的性能提升40倍以及系统性能提升2倍。微软推动了这一FPGA加速器的发展,并在其及其云平台内本地启用了人工智能。同样,IBM和Xilinx宣布合作,使FPGA加速器可用于数据中心架构。
在上面描述的现有方法中,通用处理器控制加速器处理器的行为,加速器处理器被编程为执行诸如图像处理或模式匹配的特定任务。一旦特定任务完成,通用处理器然后协调进一步的任务,以便可以完成后续过程。这样,可以获得与速度相关的一些优点,因为处理任务将通过特定的配置硬件来完成。但是,使用通用处理器的系统所需的处理器协调和数据移动会提供延时,延迟,因为操作系统本身无法将恶意代码与预期的代码执行区分开来而在通用处理器上盲目执行导致的固有的安全漏洞。在其他配置中,定制处理器被配置为充当加速器或类似于协处理器操作,再次与通用处理器和固有不安全操作系统一起操作。
最近在Equifax发生的一连串的数据泄露事件,其中超过145,000,000名美国消费者的财务和大部分不可更改的个人数据受到了损害。虽然人们越来越希望提高计算机系统抵御网络攻击的能力,但这种高调攻击在许多领域都很常见,包括政府人事记录保存,零售交易处理和社交媒体。虽然已经进行了许多尝试来改进基本安全特性,诸如采用更复杂的密码和生物识别访问之类,但是这些尝试几乎没有显着减少典型的基于微处理器的计算机系统的攻击面。绝大多数此类攻击利用底层软件操作系统(OS)中的特征或漏洞,导致微处理器执行不需要的功能。因此,大多数数据中心合规性认证组织(如HIPPA、PCI或FEDRAMP)要求这些数据中心每天检查已发布的操作系统安全漏洞列表,并针对已识别的漏洞实施修补程序。这些努力试图保持领先黑客一步,但仍有进一步的漏洞被发现。
除了上面提到的安全挑战之外,基于通用处理器的计算机系统在同时执行应用程序和执行应用程序的连续监视时也具有固有的低效率。在计算机应用程序中,能够监视在应用程序执行期间可能发生的各种事件通常是有益的。这些事件可以让用户深入了解应用程序性能或整体系统运行状况。不幸的是,在当今基于微处理器的计算机系统中监视诸如此类的事件是有代价的。为了将所需的监视添加到应用程序中,开发人员必须添加其他软件步骤。然后,这些步骤必须由微处理器执行,从而消耗处理时钟周期并且还改变原始应用程序的指令执行。由于一个应用程序生成数百万个这样的事件并不罕见,因此整体应用程序性能会很容易受到影响。因此,对指令处理器中的事件的任何监视都将减慢其应用程序性能,使得监视所述期望级别的事件变得不切实际。
发明内容
提供的此发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。此发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
本发明公开了一种FPGA平台即服务(PaaS),其利用若干不同的特征来在企业超级计算平台上远程构建、操作、监视和更新企业应用程序,其中利用一个或多个可重新配置的处理器执行主计算。在一个实施例中,在不使用操作系统指令处理器的情况下执行整个计算平台。通过可靠的FPGA PaaS,利用计量处理元件市场可以开发和运营企业应用程序。因此,企业开发人员可以通过将各种处理元件组合到应用程序中来构建应用程序。PaaS还提供易于使用的集成开发环境,为FPGA PaaS企业开发人员提供功能。
附图说明
图1是一种FPGA平台即服务(PaaS)的框图。
图2是使用多个节点处理消息的FPGA应用程序的框图。
图3A是FPGA计算节点上的FPGA应用程序的框图。
图3B是与控制FPGA连接的FPGA计算节点上的FPGA应用程序的一个可选实施例的框图。
图4A是FPGA组件的框图。
图4B是FPGA源代码文件的框图。
图5A是具有串行布置的多个FPGA组件的FPGA布局的框图。
图5B是具有并行布置的多个FPGA组件的FPGA布局的框图。
图5C是正常微处理器执行指令的框图。
图5D是具有事件监视的微处理器执行的框图。
图5E是具有事件监视的基于FPGA的处理器执行时间的框图。
图6是FPGA应用程序开发模块的框图。
图7是FPGA编译模块的框图。
图8是可信部署模块的框图。
图9是使用多个可变协议特征的FPGA应用内的节点到节点通信的框图。
图10是一个示例FPGA系统的框图。
图11是用于FPGA系统的I/O节点的框图。
图12是用于FPGA系统的可重新配置计算节点的框图。
图13是用于FPGA系统的公共存储器节点的框图。
图14是采用两个四节点主板的示例性FPGA应用的框图。
图15是采用一个三十二节点主板的示例性FPGA应用的框图。
图16A-16E是可以在FPGA应用内使用的各种协议的示意性框图。
具体实施方式
一旦适当地配置,FPGA就提供相应的灵活性和处理速度。也就是说,必须不断协调这些设备的配置以执行该处理。目前,开发人员访问FPGA上电路开发的源代码仅限于开源或为每个开发人员席位或每个应用程序支付的大量的前期许可成本。与此同时,企业应用程序开发人员寻求在其应用程序中使用尽可能多的持久且高性能的组件,以加快其上市时间并减少他们必须构建和维护的代码总量。虽然FPGA处理器已存在一段时间,但由于开发成本较高,FPGA通常用于专业计算或嵌入式计算设备。
图1是FPGA PaaS环境100的示意图,其包括用于构建和部署在市场(marketplace)104内部署的FPGA应用程序102的若干模块,其可以基于FPGA应用程序102的开发、编译和部署来促进赔偿。使用合适的应用程序开发模块106构建FPGA应用程序102,其可以包括开发者使用的如下面将讨论的各种工具。在使用开发模块106组装源代码之后,可以使用FPGA编译模块108来编译源代码。FPGA应用程序102可以针对企业应用程序进行缩放,使得多个FPGA计算节点、多个存储器节点、FPGA交换机和多个I/O节点在企业超级计算平台中协调在一起,以提供与当前系统相比改进的安全性和性能。在一个实施例中,整个FPGA应用程序102在不使用操作系统的情况下执行计算、存储、切换和联网。
在一个实施例中,当准备部署时,FPGA编译模块108产生一个多组件应用程序包,包括一个或多个比特流和FPGA应用程序102内的流之间的指定连接的流连接信息。可以保护和加密应用程序包,以便由可信部署模块110生成安全部署。可信部署模块110使用该应用程序包在开发模块106内指定的一个或多个服务器上部署FPGA应用程序102。在一个实施例中,可信部署模块110可以利用一个或多个管理FPGA来与FPGA应用程序102通信并部署FPGA应用程序102。一个或多个服务器可以位于单个数据中心内,也可以根据需要部署在多个数据中心内。
可以使用没有操作系统的FPGA处理器来实现FPGA应用程序102。因此,可以极大地减少或消除FPGA应用程序102的任何网络攻击面。为此,可以使用开发人员熟悉的使用标准高级语言(standard high level language(s))或基于图形用户界面(GUI)的编程技术的编译器。
在一个实施例中,FPGA应用程序102不需要主机微处理器,而是使用FPGA。相比之下,当前基于FPGA的处理元件,例如Microsoft的Catapault板或由Altera或Xilinx构建的各种卡,被视为以某种形式的微处理器的加速器,仍然使系统容易受到传统攻击。在FPGA应用程序102中使用仅基于FPGA的计算元件仅执行在FPGA处理器中的数据流电路中实例化的代码。与操作系统代码中具有被开发功能的微处理器相比,可以减少或消除攻击者可以开发的功能。
用于开发FPGA应用程序102的合适编译器可以接受标准高级语言(例如C语言),并且将高级语言转换为可以在一个或多个FPGA处理器中实现的数据流图,而不需要任何FPGA应用程序102驻留在微处理器上。还可以通过使用GUI生成编译器的高级语言输入。虽然目前存在许多“C to Gates”类型的FPGA编译器(例如由Impulse Accelerated Technologies生产的编译器),但这些编译器不能仅使用FPGA处理器或仅使用FPGA处理器集合来实现整个软件应用程序。相反,这些应用程序使用微处理器主机来配置FPGA,决定FPGA将接收哪些数据并执行应用程序接口管理。通过结合仅使用FPGA处理器进行计算和能够为FPGA处理器生成独立应用程序的编译器,可以减少应用程序的攻击面。
如本文所使用的,FPGA应用程序包括执行数据处理的任何计算机程序,其中大部分或全部数据处理在诸如FPGA处理器的可重新配置硬件上执行。在一个实施例中,运行时环境完全基于FPGA,而没有利用可重新配置的计算节点、可重新配置的交换机、可重新配置的公共存储器节点和可重新配置的I/O节点的组合的操作系统。在另一个实施例中,在运行时环境中,FPGA应用程序可以使用微处理器、具有操作系统或编译为没有操作系统的机器代码、可重新配置的计算节点、可由处理器访问的可重新配置的公共存储器以及指定的各种组合的交换机模块的组合。其他元件可以在FPGA应用程序102中使用,例如流协议、流数据源、I/O连接器(提供沿内部线路的连接)、I/O代理(提供到外部系统的连接)、代码块的组件和由代码块的多个组件组成的复合组件。
在FPGA应用中,处理器可以根据需要独立地或选择性地操作。在一些实施例中,FPGA应用程序102包括:一个或多个入口点(FPGA应用程序的组成部分,用于接收FPGA应用程序外部的输入消息),一个或多个出口点(FPGA应用程序的组成部分,用于从FPGA应用程序外部传送输出消息),一个或多个可重新配置的计算节点(例如,处理数据的物理FPGA),处理节点可访问的一个或多个存储器节点(例如,持久物理存储器、非持久物理存储器),其中由此处理节点在存储器节点读取和写入数据,以及一个或多个包括用于在处理节点和存储器节点之间路由和通信的可执行逻辑的交换机。在一些实施例中,计算节点可以包括微处理器。
在一个实施例中,FPGA应用程序102利用包括事件生成器和事件消耗器的事件处理系统。FPGA应用程序102的组件可以在该事件处理系统内生成或启动事件,并将其呈递给FPGA应用程序102内的多个事件流,而且事件可以被记录为一个或多个事件记录。在一个实施例中,事件记录结合安全硬件元件(例如,可信平台模块(TPM))或独立于其,可以基于零知识块链架构生成事件记录。因此,具有事件记录密钥字符的独立方可以在以后证明特定事件是真是假。
在操作期间,还可以采用监视模块112来监视所部署的FPGA应用程序102的各种度量。这些度量可以包括响应时间,特定组件的使用等。这些度量可以用于分析FPGA应用程序102的性能,并且基于该分析,使用应用程序开发模块106更新FPGA应用程序102的源代码。如下面更详细讨论的,监视模块112与FPGA应用程序102进行的实际处理并行地收集从监视电路发出的信息,而不会对FPGA应用程序102造成任何性能损失。监视模块112可以共同用于执行负载平衡,与FPGA应用程序102相关联的各种组件的利用率计算以及其他启发式测量,以优化FPGA应用程序102的部署。
另外,计量模块114可用于度量所部署的FPGA应用程序102。如下面更详细讨论的,计量模块114与由FPGA应用程序102进行的实际处理并行地收集从计量电路发出的信息,而不会对FPGA应用程序102造成任何性能损失。由计量模块114生成的计量事件与每个已部署的FPGA应用程序102相关联并生成特定的使用计数。可以使用计量电路处理使用计数以根据需要产生输出。在一个实施例中,计量模块114在具有FPGA应用程序102的处理块的相同FPGA电路上并行操作。
在一个实施例中,计量事件被路由到FPGA应用程序102中指定的特定出口点,并由计量模块114收集,以便实时地进行适当的聚合和计费(例如,通过创建计量事件记录)。在另一个实施例中,计量记录可以被格式化并传送到计费系统(例如,诸如Zuora的SaaS计费提供商,诸如亚马逊网络服务(Amazon Web Services)或Microsoft Azure的云提供商)。在另一个实施例中,可以使用其他方法传输计量记录(例如,GNU隐私保护(GPG)加密的电子邮件或等同物)。记录的传送使得由于各种原因(例如,安全性、连接性)而不直接连接的系统能够远程地发送到计量模块114。在一个实施例中,计量事件可以由PaaS平台计费并且为每个独特的赔偿义务调配分配和分配支付。
图2是根据一个实施例的FPGA应用程序102的组件的框图。FPGA应用程序102包括I/O节点200和一个或多个FPGA计算节点202(显示为单独的FPGA计算节点202(1-N))。FPGA计算节点202(1-N)可以分布在整个企业中,包括多个数据中心、多个主板和主板内的多个节点。在根据一个实施例的操作中,输入消息210由I/O节点200接收,该I/O节点200可以执行消息解释、负载平衡、高可用性、持久性和流路由以将流分发到FPGA计算节点202。在一个实施例中,I/O节点200包括到FPGA应用程序102的一个或多个入口点以及来自FPGA应用程序102的一个或多个出口点。FPGA计算节点202使用如下所述的FPGA计算节点对接收的输入消息210执行流处理,并将输出数据提供给I/O节点200。然后,I/O节点200发送输出消息216。在一个实施例中,每个FPGA计算节点202(1-N)可以是相同的(例如,以提供高可用性解决方案)或者包括用于FPGA应用程序的单独处理任务。
在一个实施例中,FPGA应用程序102被编程为执行联网功能,并且经由I/O节点200直接接收网络分组(例如,以太网分组)作为输入消息210,并且FPGA计算节点202(1-N)实现包含硬件业务规则的业务应用程序。在该实施例的一种形式中,整个业务应用栈在可重新配置的计算节点内实现,从通信(例如,以太网)层到FPGA应用程序102的业务应用,包括I/O节点200和FPGA计算节点202。也就是说,排除从输入消息到可配置处理器可读的格式的转换以及从可重新配置处理器可读的格式到输出消息格式的转换,可重构处理器在没有操作系统管理资源的情况下执行FPGA应用程序102内的所有处理。在一个具体实施例中,计算节点形成用于FPGA应用程序102的主要计算功能,而无需使用管理可重新配置处理器的操作系统或FPGA应用程序102的任何其他硬件资源。也就是说,FPGA应用程序102独立于任何操作系统进行操作。在另一实施例中,联网功能和业务应用程序可包括跨多个可重新配置的计算节点和多个卡以任何方式部署的单独处理元件。在另一实施例中,I/O节点200包含用于FPGA应用程序102的网络功能和/或业务功能的一部分。在又一个实施例中,计算节点202可以使用单个可重新配置的计算节点,或者可以使用除可重构处理器之外的可重新配置的硬件。在又一个实施例中,计算节点202可以与微处理器协作使用可重新配置的硬件。在一个实施例中,I/O节点200充当网络分组到二进制信息的转换器,以便FPGA计算节点202处理二进制信息。FPGA计算节点202之间的通信可以由通信协议(例如,也使用二进制信息)来管理,如下所述。I/O节点200可以充当由FPGA计算节点202处理的二进制信息的转换器,以根据需要对网络分组进行网络化。
根据一个实施例,FPGA应用程序102为企业提供高可用性解决方案。例如,FPGA计算节点202可以执行冗余工作,使得如果一个或多个FPGA计算节点202发生故障,FPGA应用程序102仍然能够对发送到FPGA应用程序102的消息提供答复或响应。在一个实现方式中,根据一个实施例的I/O节点200将同时向多个FPGA计算节点202提供输入流,并且一些或所有FPGA计算节点202将对所接收的输入流执行相同的计算。然后,这些FPGA计算节点202中的每一个将向I/O节点200提供输出流。I/O节点200接收输出流并识别输出流中的单个输出流(例如,使用一致算法)以提供输出消息216。以这种方式,FPGA应用程序102提供高可用性,增加响应可靠性。
注意,FPGA计算节点202可以在单个主板内或分布在多个单独且不同的主板上,并且任何给定的一个主板可以包括多于一个的I/O节点200和任意数量的FPGA计算节点202。例如,一个主板可以实现I/O节点200和单个FPGA计算节点202,使得主板的I/O节点可以决定将输入流路由到主板内的FPGA计算节点202,以及在一个或多个主板中的其他FPGA计算节点202,实现FPGA应用程序102的一部分处理。如图2的虚线所示,FPGA应用程序102可以被缩放以包括第二I/O节点202-2和第三I/O节点202-3,它们彼此直接通信以便使用不同组的FPGA计算节点202-2的处理。
各种通信信道可用于在FPGA应用程序102内(例如,在单独的FPGA计算节点202内和之间)进行通信,例如以太网或InfiniBand I/O节点,包括来自单独的可重新配置的硬件节点的二进制数据流的双向数据总线,主板内通信连接(例如,到主板内的单独节点),主板间通信连接(例如,光链路)等。在一个实施例中,FPGA应用程序102被约束到单个可重新配置集成电路芯片(例如,现场可编程门阵列(FPGA))上的FPGA计算节点202。在另一实施例中,FPGA应用程序102可以分布在多个集成电路芯片,主板内的多个节点(例如,包含一个或多个电路的印刷电路板)和/或经由诸如以太网、无限宽带(InfiniBand)或直接光链接的通信信道连接的多个主板上。
图3A是可以在如下面将讨论的合适的处理平台上实现的示例性FPGA计算节点202的框图。在一个实施例中,FPGA计算节点202在没有操作系统的情况下操作,并且由逻辑块之间的多个逻辑块和互连(例如,流连接)形成,逻辑块被配置为直接在一个或多个FPGA计算节点上运行应用。如本文所示,FPGA计算节点202包括由多个FPGA组件252(示为任何数字1-N)形成的FPGA处理器250,其形成多个电路以从入口组件254(例如,由一个或更多入口点形成)接收数据,处理数据并输出或将数据发送到出口组件256(例如,由一个或多个出口点形成)。
在一个实施例中,FPGA处理器250是物理上分立的集成电路,包括多个可重新配置的硬件门。在其他实施例中,FPGA处理器250包括通过各种通信链路彼此连接的多个物理上分立的集成电路。在一个实施例中,FPGA组件252确定性地处理数据。FPGA组件252(1-N)使用由FPGA处理器250(例如,存储器组件262、磁盘264)直接访问的数据记录260或本地存储在FPGA处理器250内(例如,在存储器循环266中)的数据记录260来处理数据。入口组件254和出口组件256访问一个或多个输入流270,例如从I/O节点200(图2)接收的输入流。特别地,入口组件254从输入流270接收数据,并且出口组件256向一个或多个输出流272提供数据。然后将输出流272发送到I/O节点200(图2)。
在一个实施例中,FPGA组件252(1-N)中的一个或多个可被编译为与一个或多个监视电路280相关联,所述监视电路280与FPGA组件252(1-N)并行操作以跟踪与FPGA组件252相关联的一个或者更多度量。监视电路280提供监视输出282,监视输出282可以跨每个FPGA计算节点200聚合,以提供FPGA应用程序102的监视数据(例如,聚合和/或实时)。
在又一实施例中,每个FPGA组件252(1-N)可以从单独的源编译,使得可以单独开发一个或多个FPGA组件,然后将其编译并部署到FPGA处理器250上。在这种情况下,FPGA编译模块108(图1)可以将一个或多个计量电路290添加到FPGA处理器250。计量电路290用FPGA组件标识符编程,用于根据需要计量FPGA组件252。在一个实施例中,计量电路290包括时间事件发射器,其可以为FPGA计算节点202中的FPGA组件252产生基于时间的计量事件。计量电路290还可以包括聚合模块,用于开发计量记录、汇总记录并产生用于FPGA组件252的计量输出292。计量模块114处理计量输出292,以基于FPGA组件252的操作确定赔偿。例如,FPGA组件252(2)可以包括每次使用0.00001美元,每GB处理1.00美元或每小时0.10美元的使用费用。因此,计量电路290可以包括确定FPGA组件252(2)被使用的次数的相应计数器。然后可以将该数字输出到计量输出292。可以对任何和所有FPGA组件252和使用任何测量单位执行计量。
在一个实施方式中,监视电路280和计量电路290直接与分立FPGA集成电路的引脚连接,该分立FPGA集成电路的引脚分别沿着与引脚耦合的导线直接提供监视输出282和计量输出292。为此,可以与FPGA处理器250建立专用线,以收集与FPGA应用程序102的其他组件的操作分离的监视输出282和计量输出292。在又一实现方式中,如图3B所示,计量电路290直接将事件路由到辅助FPGA处理器251。FPGA处理器251包括用于计量电路290的电路系统。在一个示例中,计量电路290包括用于通过执行一个或多个FPGA组件252来收集事件的缓冲器。从FPGA处理器251中的计量电路290,如上所述产生计量输出292。
因此,在使用计量电路290生成计量输出292的一个实施例中,一种方法包括:将第一数字比特流接收到多个电路,多个电路由多个代码块生成;通过多个电路处理第一数字比特流,并行地产生使用值,该使用值表示消耗第一数字比特流的多个电路中的至少一个电路的执行;发送指示一个或多个使用值的第二数字比特流。
如本文所使用并且在图4A中示意性地示出的,示例性FPGA组件300是定义一个或多个输入流302的数据处理,定义要对一个或多个输入流执行的操作的代码块304(例如,由源代码定义,编译和配置到可重新配置的硬件单元上),以及一个或多个输出流306。在FPGA应用程序102内,输入流302和输出流304包括用于识别流的各方面的各种形式的信息。例如,输入流302和输出流304可以包括类型(例如,支付流,令牌流,密钥值对),用于区分FPGA应用程序102内的流的唯一标识符,宽度和在处理流中其他有用的信息。当FPGA组件252位于另一FPGA组件附近时,该FPGA组件252包括可重新配置的硬件,其将一个FPGA组件的输出流传送到一个或多个后续FPGA组件的输入流。
在一个实施例中,输入流302包括用于从对应的输出流接收信息的流协议信息,并且输出流304包括用于与对应的输入流进行通信的流协议信息。例如,应用程序内的输出流可以包括指示相邻输入流位于同一FPGA处理器内的信息,并且因此可以包括控制位或其他指示符,指示不需要特定协议来将结果发送到相邻的输入流。在另一个实施例中,输出流可以包括位于另一个FPGA处理器上的相邻输入流,在同一主板内并通过主板内的交换机进行通信的信息。在这种情况下,输出流可以利用主板内协议来控制同一主板内的流之间的通信。在又一实施例中,输出流可以包括指示相邻输入流位于单独主板上的信息。因此,输出流可以包括指定的流协议信息以及加密特征(例如,使用IPsec或加密密码的布置)以通过以太网传送流。在一个实施例中,可以使用复杂寻址技术,例如通过在存储器访问操作中表示具有与主板,节点和直接存储器地址有关的信息的地址。在又一实施例中,企业级流协议层可以与流协议信息结合使用,用于跨越企业系统的输入和输出流之间的通信,例如到单独的电路、节点、主板、数据中心或者诸如此类的。企业流协议层在建立安全的企业基础架构中很有用。
图4B是FPGA组件的源代码文件的示意图。源代码文件包括几个最终编译并形成直接执行逻辑的信息元素。在一个实施例中,直接执行逻辑是包含跨越企业超级计算平台节点的逻辑的企业级应用程序。源代码文件中的示例元素包括输入流标识符,输出流标识符,高级语言或硬件描述语言代码块,数据流描述语言,遵循用于连接相邻流的连接协议的流连接代码,源的开发者的赔偿要求代码和其他信息元素。在编译期间,输入流和输出流标识符用于防止跨应用程序的命名冲突,以便为每个流(例如,跨企业)具有唯一的流标识符。例如,如果在整个应用程序中的多个位置使用特定源代码文件,则在应用程序开发期间(例如,通过主板和/或节点)分配每个流的唯一标识符。数据流描述语言和流连接代码用于连接相邻流,并进一步防止不向应用程序提供输出的流。例如,如果特定代码块包括四个输出流,则流连接代码可以确保四个输出流有四个对应的连接。数据流描述语言可用于在编译FPGA应用程序时生成流连接代码。赔偿要求可以由开发人员设置,并且在编译和部署时,形成与应用程序的逻辑并行操作的直接执行块,以确定应用程序逻辑的使用量和赔偿。
在FPGA应用程序102内,可以按串行和/或并行地布置多个FPGA组件。例如,图5A是示例FPGA布局320的示意性框图,该示例FPGA布局320包括入口I,出口E和在入口I和出口E之间按顺序(即,串行地)布置的多个FPGA组件C1-C4。布局320还包括位于FPGA组件C1-C4之间的多个流S1-S5,以提供相邻微电路段之间的连接。特别地,流S1-S5将数据从第一FPGA组件的相应输出流传送到第二FPGA组件的后续输入流。特别地,流S1将数据从入口I传送到FPGA组件C1的输入,流S2将数据从FPGA组件C1的输出传送到FPGA组件C2的输入,流S3将数据从FPGA组件C2的输出传送到作为FPGA组件C3的输入,流S4将数据从FPGA组件C3的输出传送到FPGA组件C4的输入,流S5将数据从FPGA组件C4的输出传送到出口E。如本文关于FPGA编译模块108所讨论的,可以基于用于指定FPGA组件的输入流302和输出流306自动编译流S1-S5的代码。另外,流S1-S5可以包括用于组件之间通信的流协议信息,所述组件可以在同一FPGA上,在同一节点上,在同一主板内的不同节点上或者在单独的主板上。FPGA编译模块108还可以识别相邻组件是否包括输入和输出流之间的统一变量。例如,关于图5A,FPGA编译模块108可以确定组件C1包括四个输出流,并且组件C2包括统一数量的四个输入流。在FPGA编译模块108确定FPGA应用程序102中不均匀性的情况下,可以生成错误消息。
图5B是示例FPGA布局330的框图,其包括入口I,出口E和多个FPGA组件C1-C4,其中FPGA组件C2-C4并联设置。特别地,流S1将数据从入口I传送到FPGA组件C1的输入。然后,流S2-S4将来自FPGA组件C1的相应输出的数据传送到FPGA组件C2-C4的输入。在各自的输入上接收数据时,FPGA组件C2-C4操作以并行处理数据(例如,在其他FPGA组件的相同时钟周期期间)。然后,流S5-S7将数据从FPGA组件C2-C4的相应输出传送到出口E1-E3。值得注意的是,布局320和330中的组件可以在FPGA应用程序的编译期间连接在一起,使得作为整体为FPGA应用程序建立入口和出口点,这取决于哪些组件被配置为接受来自外部源的通信和哪些组件配置为与外部目标通信。
在如上参考图3所讨论的计量执行任何FPGA组件C1-C4的上下文中,可以与操作指令并行地执行事件监视。在图5C中,示意性地示出了包括指令(或其他指令集)1-7的示例应用。在当前的微处理器方法中,指令被顺序执行,这种执行在执行时间内执行。如果开发者希望收集所执行的每条指令(或任何数量的指令)的信息,如图5D所示,则开发者必须在指令序列中插入信号指令。在所示的示例中,当执行指令1、3和5时将生成信号。生成此信号的时间将添加到该执行时间。相反,如图5E所示,为指令产生信号1、3和5而产生的信号与指令1-7的执行并行完成,使得执行时间与图5C的执行时间相同。
考虑到对FPGA应用的上述理解,图6是FPGA应用程序开发模块106的框图。开发模块106利用若干工具来开发FPGA应用程序,例如通过用户界面340(例如,命令行,GUI)访问。一个工具是应用需求选择模块350,其可以包括用于选择与FPGA应用相关联的各种参数的接口,诸如可用性规范、部署规范、存储器规范、证明规范、服务级别协议规范、I/O节点规范和其他。这些规范有助于确定部署的FPGA应用程序的节点数、节点类型、主板、安全功能和其他参数。例如,可以确定FPGA应用程序可以利用具有负载平衡的两个主板来实现应用程序的正常操作,并且可以使用一个主板来进行灾难恢复。根据应用程序要求,可以生成资源列表,标识要使用的组件和组件类型。该列表可以包括主板列表,每个主板的计算节点以及每个主板的内存节点。应用程序包可以包括FPGA应用程序中的每个计算节点的直接执行逻辑(例如,以比特流的形式)。
FPGA组件模块352允许开发者选择将在FPGA应用程序102内使用的FPGA组件(在内部或由第三方开发)。在一个实施例中,第三方开发者可以发布FPGA组件的功能描述,并指定在FPGA应用中使用FPGA组件的许可费用。费用可以基于指示调试,硬件模拟或FPGA应用程序部署的部署类型。在另一个实施例中,开发者可以发布FPGA组件的功能描述并基于处理计数或每个时间段的使用或任何测量单位来指定许可费用。在另一个实施例中,可以为每个开发者席位指定许可费用。在编译时,计量电路被添加到FPGA应用程序以计算指定的赔偿。
数据流可视化模块354允许开发者可视化FPGA应用程序内的数据流。使用可视化模块354,开发人员可以了解FPGA应用的整体范围以及在什么位置使用哪些组件,位置是在特定FPGA处理器上、在特定主板内还是在其他位置。例如,在一个实施例中,可视化模块354可以显示应用程序流,该应用程序流示出了FPGA应用程序102的所有入口点(例如,通过在左侧列或图形用户界面的顶部表示入口点)。例如,入口点可以用特定名称表示,使得开发者可以容易地识别到各自入口点的外部连接点。然后,可视化模块354可以进一步示出与入口点和/或受管理存储器连接的应用程序流,以用于连接到入口点的读取操作。在另一实施例中,可视化模块354显示在FPGA应用程序102的测试运行中捕获的数据记录。可视化模块354使用户能够按时间顺序逐步通过实际捕获的数据流,在处理测试数据的FPGA应用程序102的每个操作阶段交互并检查数据。可以进一步示出各种规则框架,其处理从FPGA应用程序102的入口点接收的入站消息。可视化模块354还可以显示输出流,用于写操作的受管理存储器和用于FPGA应用程序102的应用出口点。在FPGA应用的操作期间,可以实时更新可视化模块354,以提供关于FPGA应用程序102如何执行的理解。
在进一步的实施例中,应用程序开发模块106可以包括上下文存储器管理器358,其中开发者可以指示如何在FPGA应用程序102内管理存储器。例如,上下文存储器管理器358可以指定对存储在由FPGA应用程序102使用的存储器设备(例如,受管理存储器的数据集)内数据的访问。在一个实施例中,某些组件(或节点)只能被授予对该数据的读取访问权限。在可选实施例中或除此之外,上下文存储器管理器358可用于在编译应用程序时指示直接执行逻辑内的存储器访问控制,使得仅直接执行逻辑可访问存储器,这可极大地增加FPGA应用程序内的安全性。例如,在具有多个公共存储器数据集的企业应用程序中,使单个组件写入单个受管理存储器数据集可以为应用程序启用数据完整性。在一个实施例中,直接执行逻辑强制执行对公共存储器数据集的访问权限。
现在另外参考图7,示出了FPGA编译模块108,其使用若干元件,诸如全局流管理器370,比特流生成器372,布局和布线工具374以及监视和计量电路生成器376。全局流管理器370使用来自源代码文件的流标识符用于应用程序,并为每个流生成命名空间,使得每个流具有唯一标识符。这样,避免了应用程序内的流标识符的重复。在一些实例中,FPGA编译模块108使用比特流生成器372生成比特流,以与指定的FPGA或FPGA应用程序中的特定块一起使用。
在FPGA应用程序102利用多个计算节点的情况下,可以生成应用程序包,使得应用程序包识别应用程序中的每个计算节点的比特流。在这种情况下,FPGA编译模块108接收由开发模块106指示的源文件,并使用与FPGA编译模块108的比特流生成器372相关联的库的硬件版本,并调用FPGA布局和布线工具374以生成一个或多个FPGA比特流。生成的比特流由编译模块108包括在目标文件中。FPGA编译模块108产生应用程序包,其可以包括FPGA应用程序中的每个计算节点的一个或多个比特流(直接执行逻辑)。
FPGA编译模块108接受源文件和资源列表文件以向开发者提供FPGA应用的概述。源文件可以来自标准库,由第三方开发和/或内部开发。编译模块108可以聚合用C和/或C++以及其他低级虚拟机(LLVM)支持的语言以及Verilog编写的源文件。因此,开发人员可以访问低级硬件功能:从高级编程语言中定义和创建处理器硬件。对计算和存储器访问的这种控制水平极大地有助于实现高计算性能。在一个实施例中,编译模块108可以导入以不同语言编写的代码,例如低级虚拟机(LLVM)语言,VB.NET中的中级语言(IL)和其他语言(例如,Java,C#,Swift)。导入此代码后,开发人员可以使用图形用户界面创建复合数据流应用程序,该图形用户界面可视化地或使用流语言指定组件。这样,开发人员可以在编译FPGA应用程序102时优化具有并行或串行特定段的应用程序的执行。
编译模块108可以包括将解释源文件(例如,用Verilog,C,C++编写)并为应用程序中的FPGA处理器创建直接执行逻辑的软件。编译模块108从代码中提取最大并行度,并生成在FPGA计算节点中实例化的管道硬件逻辑。在一个实施例中,编译模块108包括多个不同的库,这些库创建为形成应用程序包的一个或多个比特流的直接执行逻辑。
编译模块108还向用户提供在“调试(Debug)模式”或模拟模式(“sim模式”)下仿真和模拟编译代码的能力。调试/模拟模式编译允许用户在不调用FPGA布局和布线工具374的情况下编译和测试CPU上的所有代码。调试/模拟模式还可以提供循环性能信息,从而在FPGA布局和布线之前实现精确的处理器代码性能估计。
监视和计量电路生成器376生成指示对来自第三方开发者的指定源文件的使用的直接执行逻辑,所述源文件指示源文件内的赔偿,例如为每次使用,每个时间段,每个模拟使用,每个模拟时间段。此外,生成器376生成直接执行逻辑,该逻辑可以指示对开发者有价值的各种监视统计信息,无论是针对测试数据生成的还是在应用的实际部署期间生成的统计数据。在任何情况下,编译模块108操作以与执行应用程序逻辑并行地定位监视和计量直接执行逻辑,以避免任何性能损失。
图8是可信部署模块110的框图,其从编译模块108接受应用程序包。可信部署模块110使用密码引擎380和部署协议管理器382。密码引擎380对应用程序包进行加密,使得加密文件可以被发送到远程系统以进行部署。结合起来,部署协议管理器382可以管理密钥和其他安全组件,以确保由密码引擎380加密的文件保持安全并且仅部署到可信目的地。最终,可以根据需要将一个或多个加密的比特流发送到远程系统以进行操作。当采用多个计算节点时,部署协议管理器382可以管理应用程序的哪些部分被部署到用于操作FPGA应用程序102的指定节点。
为了在FPGA应用程序102中的节点之间有效且安全地处理信息,可以使用单向异步通信协议。图9是使用多个可变协议特征控制节点通信的(示意性地示为菱形)节点1和节点2之间通信的示意性框图。示例协议特征包括编码,包装,密码,密码模式,密钥,算法和排列以及从发送方(例如,节点1)发送消息,协议特征可以指示包括发送方标识符,签名,加密模式,一个或多个密钥,目的地标识符,安全框架的数量和类型,密码,算法等给定目的地时使用的消息。在接收器处接收和解码消息时,接收器(例如,节点2)可以评估消息的内容以验证对所接收消息的可变协议特征的遵守。例如,接收器可以验证签名,加密,格式等,以确定消息是否来自可信源,并且消息内的内容是否可以安全处理。
对于特定的FPGA应用,可以使用任何数量的不同协议,密码,密钥,算法和永久性来改变可变协议特征以建立不同的安全级别。例如,当节点1在FPGA应用程序外部并且节点2是FPGA应用程序的一部分时,可以使用第一协议。例如,可以加密这种通信。在另一个示例中,节点1和节点2在FPGA应用的独立主板中,可以使用不同的第二协议。在又一示例中,其中节点1和节点2在FPGA应用的相同主板内,可以使用不同的第三协议。此外,第四协议可用于写入FPGA应用程序内的存储器,第五协议可用于从FPGA应用程序内的存储器读取。
在一个实施例中可以提供安全流可编程门阵列能力,其允许利用消息中包含的信息快速且容易地执行配置步骤。例如,从消息中提取配置密钥信息,并适当地用于选择适用状态以确定包括加密密码,处理流程和规则的适用配置信息。接收器利用预编译的控制信息,该信息存储在接收器可直接访问的存储器中,以进一步适应该过程。因此,提取的配置密钥信息可以利用控制流或消息报头来适当地与存储器协调,从而为所涉及的接收器提供适当的配置。同样,然后通过接收器处理相同的信息流,以提供所需的输出流。
在操作中,接收器将应用规则来确定如何处理输入数据流,从而通过直接在硬件上提供该能力来执行上述配置信息的提取;避免了对传统通用处理器的需求。作为其产品,没有操作系统来操作各种节点。因此,减小的攻击面提供增强的安全性并且可以获得性能。
本文描述的一个实施例涉及用于FPGA的流触发方法。可选地,这被称为流可编程门阵列(SPGA)。所使用的方法包括直接从网络接收输入流,基于输入流的接收触发FPGA处理器的配置,以及通过FPGA处理器内的编程硬件门确定性地处理接收的输入流。使用这种方法,所有组件因此都是流触发的,并且仅基于输入流中包含的信息进行操作。在可选实施例中,存在另外的可能性,其中输入流中的数据与上下文信息(例如,本地存储在存储器中)组合以确定流路由。
在一个示例中,组件1和组件2均包括FPGA和用于控制FPGA的逻辑。在一个实施例中,节点到节点通信协议在I/O节点、PCI Express卡、IoT可嵌入模块或采用包括FPGA的硬件单元的其他设备上实现。例如,该设备可以是移动设备、平板电脑、电话、计算机、服务器和大型机等。在另一个实施例中,节点可以在公共主板,主板或硬件单元的替代容器中通信地连接在一起。在一些实施例中,组件可以包括可以佩戴、携带、成组使用、独立或属于松散耦合网络的设备。
在一个实施例中,接收器接收消息,该消息不存储在与接收器直接连接的任何存储器中,而是通过接收器流传输。接收器执行流处理,这与请求和响应处理不同。通过流处理,接收器不断检查输入消息的内容以获取某些触发信息,并在发现该信息时作出相应的反应。
根据给定消息的内容,接收器可以处理或不处理该输入消息,并且可以生成或不生成与该输入消息相对应的输出消息。作为一个示例,接收器在接收时不处理输入消息,但仍然将输入流传输到另一节点。作为另一示例,接收器在接收时处理输入消息并生成相应的输出消息。作为另一示例,接收器在接收时不处理输入消息或仅处理输入消息的一部分,并且不生成与输入消息(例如,由于欺诈消息)相对应的输出消息。此外,如果确定接收到欺诈性消息,则接收器可以采取各种动作,例如丢弃通信、取消网络带宽和其他动作。
图10示出了用于实现本文呈现的概念的合适的计算机系统1200。在一个示例中,系统1200的主板可以是4节点,32节点,全封闭电磁脉冲(EMP)保护机柜,具有数百个节点和坚固的信号数据处理器(SDP)形状因子,利用下面讨论的各种模块。主板可以包括输入/输出(I/O)节点,可重新配置的算节点的混合,每个节点具有一个或多个FPGA处理器和可选的微处理器,以及公共存储器节点。如图10所示,系统1200包括一个或多个管理FPGA处理器1201,I/O节点1202,可重新配置的计算节点1204和公共存储器节点1206。对于32节点主板,可以根据需要使用多个I/O节点。
通过交换机1210建立主板内的单元到单元的互连。该交换机可以体现为具有商标的部件。每个所选模块可以具有交换机连接以实现节点到节点的通信,例如如上所述。在另一实施例中,交换机1210可以包括FPGA或直接执行逻辑,以在主板内或跨多主板应用程序执行负载平衡操作。交换机1210还可以包括用于实现节点到节点和主板到主板通信的安全协议的逻辑,如关于图9特别讨论的。
一个或多个管理FPGA处理器1201可以位于系统1200的主板上,用于与系统1200的其他部分连接以控制一个或多个FPGA应用程序102的部署。此外,管理FPGA处理器1201可以根据需要执行其他控制任务。
I/O节点1202,可重新配置的计算节点1204和公共存储器节点1206可以体现在固定在公共主板中的插槽内的单独节点上。在一个实施例中,4节点主板可以包括容纳四个节点的插槽。根据特定应用程序的开发要求,所选配置可包括1个I/O节点1202,2个可重新配置计算节点1204和1个公共存储器节点1206。对于利用更多存储器的FPGA应用,所选配置可包括1个I/O节点1202,1个可重新配置的计算节点1204和2个公共存储器节点1206。对于具有多个4节点主板的FPGA应用程序,可以使用各种配置,其中FPGA编译模块108将生成用于主板到主板通信以及节点到节点通信的通信协议。
在一个实施例中,FPGA系统1200的使用被部署为安全设备。在可选实施例中,FPGA系统1200与一个或多个可信平台模块(TPM)结合使用以提供可重新配置系统的证明。在又一个实施例中,使用字节码对FPGA系统1200进行编程,该字节码已由第二可信系统加密签名,并通过密封在TPM内的密钥验证为有效。在另一实施例中,用于验证字节码的加密签名的密钥由第二外部可信系统提供,该第二外部可信系统可以是或可以不是硬件安全模块(HSM)设备。在另一实施例中,TPM用于FPGA应用中的多个(或每个)硬件组件。另外,可以使用一个或多个TPM来执行FPGA应用程序102的分阶段解锁。在一个实施例中,可以在多于一个节点上使用多于一个TPM来执行FPGA应用程序102的分阶段解锁。
在一个实施例中,主板和/或FPGA系统1200将使用安全加密处理和密钥管理,其满足金融行业和健康行业标准,例如PCI-DSS、HTPAA和NIST标准,用于金融交易操作、支付授权、数据保护、标记化等所需的安全性和合规性。在一个具体示例性实施例中,公共主板还可以具有嵌入主板中的防篡改HSM或者在包含在主板内的单个卡(card)或盒(cartridge)上实现。在另一个实施例中,主板本身可以实现为安全和防篡改,使得如果主板检测到它已经受损,则操作可以停止整个主板和/或HSM。在另一实施例中,使用FPGA系统1200来实现HSM。在又一个实施例中,TPM可以与HSM结合使用,或者与主板上的HSM一起使用,或者独立地在FPGA系统1200上使用。
交换机1210是可扩展的、高带宽、低延迟的交换机。每个交换机1210可以支持64位寻址和输入以及输出端口以连接到多个节点。交换机1210可以进一步扩展以寻址多个主板,使得寻址存储器中的特定位置是以[主板]-[节点]-[存储器位置]的形式寻址的消息。I/O节点1202,可重新配置的计算节点1204和公共存储器节点1206都可以以任意配置连接到交换机1210。在一个实施例中,每个输入或输出端口维持3.6GB/秒的产生数据有效载荷。对于总计,每16个端口产生的分割数据带宽为57.6GB/秒。在另一实施例中,端口到端口延迟为180ns,在每个端口上实现单错误校正和双错误检测(SECDED)。在另一个实施例中,交换机1210也可以以多层配置互连,允许两层支持256个节点。
如图11中所示,I/O节点1202通过使用以太网,Infiniband或与其连接的另一交换机1210的网络连接向系统1200提供外部连接。I/O节点1202可以包括处理数千个套接口连接的网络处理器1220(例如,来自加利福尼亚州圣何塞的Cavium公司的III C78XX处理器)。I/O节点1202可以提供例如从外部网络到系统1200的两个40GbE连接以用于以太网。网络处理器1220可以将来自以太网的输入网络流量转换到控制FPGA接口1222的流量。控制FPGA接口1222提供FPGA应用程序102的安全边界。控制FPGA接口1222管理与交换机1210的通信,用于I/O节点1202的所有入站和出站流量。网络处理器1220还可以访问存储器单元,如图所示SSD设备1224和单独的SDRAM设备1226。在另一个实施例中,I/O节点1202可以包括FPGA或FPGA可以替换网络处理器1220并且如本文所讨论的那样编程。在另一个实施例中,I/O节点1202可以将网络处理器1220和控制FPGA接口1222组合为单个FPGA,并且如本文所讨论的那样进行编程。
如图12所示,可重新配置的计算节点1206包括可选的中央处理单元(CPU)1230,控制FPGA 1232,用户逻辑FPGA 1234和一组存储器设备(包括SDRAM,SRAM和非易失性存储器等)。在一个实施例中,应用FPGA是10 10AX115FPGA。控制芯片FPGA 1232具有附加的共享存储器单元,其也可从CPU 1230和用户逻辑FPGA 1234访问。控制芯片FPGA1232还具有两个交换机端口,用于与交换机1210进行模块间通信。
如图13中所示,公共存储器节点1206为系统1200提供较大的存储器容量。如图所示的公共存储器节点1206包括可以使用块寻址方案的两个DMA控制器1250和1252。对系统1200内的公共存储器节点1206的访问在主板中的单元之间共享,并且还可以跨不同的主板配置。在一个示例中,公共存储器节点1206包括通过六端口PCIe交换机连接的12个固态驱动器(SSD)设备,提供高达48TB的非易失性存储器,用作公共存储器。每个DMA控制器1250和1252能够执行复杂的DMA预取和数据访问功能,例如数据打包、条形访问和分散/聚集,以最大化系统1200的有效使用。
对于这些操作,互连效率比使用相同互连的基于高速缓存的微处理器大10倍以上是常见的。每个输入或输出端口维持至少3.6GB/秒的产生数据有效负载。在每个端口上实现单错误纠正(Single Error Correction)和双错误检测(SECDED)。FPGA控制器1250和1252用于控制存储器操作,包括支持复杂的直接存储器访问(复杂DMA)。在一个实施例中,控制器被编程为使用复杂的直接存储器访问(复杂DMA)来访问存储器。使用复杂的DMA,逻辑可以应用于通过在存储器访问命令中包括逻辑而在写入时写入存储器的数据。交换机1210允许一个节点上的组件使用复杂DMA直接访问另一节点中的存储器。
图14示意性地示出了部署在多个主板上的一个示例FPGA应用程序102,其被表示为来自应用程序包1300的4节点主板1200-1和4节点主板1200-2。每个主板分别配备有I/O节点1202-1和1202-2,用于从主板1200-1和1200-2接收的通信和从主板1200-1和1200-2输出的通信。I/O节点1202-1和1202-2中的每一个包括用于整个FPGA应用程序102的通信的指定协议执行逻辑。例如,I/O节点1202-1和1202-2可以包括处理外部消息(即,到FPGA应用程序102的入口点)的特定协议验证元件(或组件)。另外,I/O节点1202-1可以包括用于生成要直接发送到计算节点1204-1和1204-2的消息的逻辑。由于这些消息是主板间通信,因此用于此类通信的协议可以与用于接收外部消息的协议不同。此外,I/O节点1202-1可以包括用于与存储器节点1206-1通信的不同协议。应用程序包1300可以包括直接执行逻辑,其允许FPGA应用程序102内的每个节点包括单独的协议,其中被实现为允许以图9中详述的方式对FPGA应用程序102和FPGA应用程序102内的通信的最大灵活性和安全性能。
以类似的方式,图15示意性地示出了从应用程序包1302形成并部署到具有32个节点的单个主板上的FPGA应用程序102,表示为各种配置的节点1310-1到1310-32和I/O节点1202-1至1202-4。应用程序包1302包括以上述方式部署到每个节点1310上的直接执行逻辑。另外,节点之间的通信可以如上面参考图9所讨论的那样实现。
在图18A-18E中示意性地示出了协议的各种使用的示例。协议可以使用本文描述的任何技术,特别是以上关于图9讨论的结构和方法。在图18A中,主板内协议PI用于主板1800内,用于具有流连接代码SCI的FPGA计算节点1801和具有流连接代码S2的FPGA计算节点1802之间的通信。FPGA计算节点1801和1802在同一主板1800内,并且期望的协议PI用于节点之间的通信,特别是流连接代码SCI和流连接代码SC2。在一些实施例中,可以利用交换机来验证对协议PI的遵守情况并路由到正确的目的地。在另一些实施例中,可以在主板内通信中使用一个以上的协议。
图18B是使用协议P2用于第一主板1810和第二主板1811之间的通信的示意图。具体地,具有主板1810中的流连接代码SC3的I/O节点1812使用协议P2与具有主板1811中的流连接代码SC4的I/O节点1813进行通信。在一个实施例中,两个主板1810和1811通过以太网或光链路连接,并且选择协议P2以为主板1810和1811之间的通信提供所需的安全配置文件。根据需要,I/O节点1812和1813中的一个或两个可以是FPGA处理器。
图18C是主板1820的示意图,其中使用流连接代码SC5将协议P3用于FPGA计算节点1821,以使用流连接代码SC6通过存储器控制器节点1822访问存储器。在一个实施例中,协议P3可以确保请求的FPGA计算节点1821被授权访问连接到存储器控制器节点1822的存储器。存储器控制器节点1822可以根据需要体现为FPGA或其他处理器。在另一实施例中,可以使用不同的协议进行读操作和写操作。
图18D示意性地示出了在主板1830内使用的协议P4。在这种情况下,使用流连接代码SC7的网络处理器1831使用协议P4与使用流连接代码SC8的FPGA计算节点1832进行通信。I/O节点1831使用协议P4将操作发送到FPGA计算节点1832并流连接代码SC8。
图18E示意性地示出了用于第一主板1840和第二主板1842之间的通信的协议P5。具体地,在主板1840中具有流连接代码SC9的交换机1841使用协议P5与在主板1842中具有流连接代码SC10的交换机1843进行通信。在一个实施例中,两个主板1840和1842通过光链路连接,并且选择协议P5以为主板1840和1842之间的通信提供所需的安全性和延迟分布。两款交换机均基于FPGA处理器。
协议P1-P5可以根据需要以若干不同方式使用,并且可以在若干不同实例中使用。另外,对于FPGA应用程序,可以使用任何不同数量的协议。这些方案可以根据需要进一步周期性地变化并以各种组合使用。因此,可以增强特定FPGA应用程序的安全性。
尽管已经参考优选实施例描述了本发明,但是本领域技术人员将认识到,在不脱离本发明的精神和范围的情况下,可以在形式和细节上进行改变。上面已经描述了本发明的各种实施例,以便说明其细节,并使本领域普通技术人员能够制造和使用本发明。所公开的实施例的细节和特征不旨在是限制性的,因为许多变化和修改对于本领域技术人员来说是显而易见的。因此,本公开的范围旨在广义地解释并且包括落入所附权利要求及其合法等同物的范围和精神内的所有变化和修改。
Claims (8)
1.一种计算机实现的方法,包括:
由处理器接收第一数字比特流到多个电路,所述多个电路由多个代码块产生;
所述多个电路执行所述第一数字比特流,并行地生成指示消耗所述第一数字比特流的多个电路中的至少一个电路的执行的使用值;
所述处理器发送指示一个或多个所述使用值的第二数字比特流。
2.如权利要求1所述的计算机实现的方法,其特征在于,所述处理器是FPGA。
3.如权利要求1所述的计算机实现的方法,其特征在于,确定性地利用所述多个电路处理所述数字比特流并生成所述一个或多个使用值。
4.如权利要求1所述的计算机实现的方法,还包括:
聚合多个使用值。
5.如权利要求1所述的计算机实现的方法,其特征在于,通过所述处理器上的一个或多个计量电路来生成使用值。
6.如权利要求1所述的计算机实现的方法,其特征在于,所述使用值指示时间间隔。
7.如权利要求1所述的计算机实现的方法,其特征在于,所述使用值指示所述多个电路中的一个被执行的次数。
8.如权利要求1所述的计算机实现的方法,其特征在于,所述使用值指示所述多个电路中的一个或多个的执行的聚合。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662409855P | 2016-10-18 | 2016-10-18 | |
US62/409,855 | 2016-10-18 | ||
PCT/US2017/057274 WO2018075696A1 (en) | 2016-10-18 | 2017-10-18 | Fpga platform as a service (paas) |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110121709A true CN110121709A (zh) | 2019-08-13 |
Family
ID=62018843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780074722.3A Pending CN110121709A (zh) | 2016-10-18 | 2017-10-18 | Fpga平台即服务(paas) |
Country Status (6)
Country | Link |
---|---|
US (1) | US20190250941A1 (zh) |
EP (1) | EP3513336A4 (zh) |
JP (1) | JP2019537784A (zh) |
CN (1) | CN110121709A (zh) |
CA (1) | CA3040887A1 (zh) |
WO (1) | WO2018075696A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11194935B2 (en) * | 2018-03-07 | 2021-12-07 | Iurii V. Iuzifovich | Method of securing devices used in the internet of things |
US11128646B1 (en) * | 2018-04-16 | 2021-09-21 | Trend Micro Incorporated | Apparatus and method for cloud-based accelerated filtering and distributed available compute security processing |
CN109144722B (zh) * | 2018-07-20 | 2020-11-24 | 上海研鸥信息科技有限公司 | 一种多应用高效共用fpga资源的管理系统及方法 |
US11750531B2 (en) * | 2019-01-17 | 2023-09-05 | Ciena Corporation | FPGA-based virtual fabric for data center computing |
EP3983883A1 (en) * | 2019-06-11 | 2022-04-20 | SMH Technologies S.r.l. | Apparatus for the programming of electronic devices |
US11397656B2 (en) * | 2019-11-04 | 2022-07-26 | Microsoft Technology Licensing, Llc | Telemetry generation for in-field hardware testing |
CN111176962B (zh) * | 2019-12-02 | 2021-09-10 | 深圳先进技术研究院 | Fpga平台及其性能评估与设计优化的方法、存储介质 |
WO2021252423A1 (en) * | 2020-06-08 | 2021-12-16 | Liquid-Markets-Holdings, Incorporated | Hardware-based transaction exchange |
CN115174654B (zh) * | 2022-07-14 | 2023-05-23 | 山东省计算中心(国家超级计算济南中心) | 一种基于FPGA和InfiniBand网络的异地通信方法及系统 |
CN115859879B (zh) * | 2023-02-28 | 2023-05-09 | 湖南泛联新安信息科技有限公司 | 一种基于fpga云平台的硬仿验证流程实现的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060075374A1 (en) * | 2004-09-30 | 2006-04-06 | Mcelvain Kenneth S | Apparatus and method for licensing programmable hardware sub-designs using a host-identifier |
US20120033880A1 (en) * | 2011-10-13 | 2012-02-09 | University Of Dayton | Image processing systems employing image compression and accelerated image decompression |
US8321558B1 (en) * | 2009-03-31 | 2012-11-27 | Amazon Technologies, Inc. | Dynamically monitoring and modifying distributed execution of programs |
US20130226764A1 (en) * | 2012-02-16 | 2013-08-29 | Marc Battyani | Fpga matrix architecture |
US20150301570A1 (en) * | 2014-01-22 | 2015-10-22 | Empire Techology Development, LLC | Detection of malware through voltage measurements of field programmable gate array |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7895304B1 (en) * | 2002-04-26 | 2011-02-22 | Ericsson Ab | Subscriber service selection over non-channelized media |
WO2009061814A2 (en) * | 2007-11-05 | 2009-05-14 | University Of Florida Research Foundation, Inc. | Lossless data compression and real-time decompression |
JP2012088901A (ja) * | 2010-10-19 | 2012-05-10 | Fujitsu Ltd | ソフトウェア管理装置、ソフトウェア管理方法およびソフトウェア管理プログラム |
US10715587B2 (en) * | 2014-04-11 | 2020-07-14 | Maxeler Technologies Ltd. | System and method for load balancing computer resources |
-
2017
- 2017-10-18 EP EP17862749.3A patent/EP3513336A4/en not_active Withdrawn
- 2017-10-18 WO PCT/US2017/057274 patent/WO2018075696A1/en unknown
- 2017-10-18 CN CN201780074722.3A patent/CN110121709A/zh active Pending
- 2017-10-18 JP JP2019520782A patent/JP2019537784A/ja active Pending
- 2017-10-18 US US16/343,401 patent/US20190250941A1/en not_active Abandoned
- 2017-10-18 CA CA3040887A patent/CA3040887A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060075374A1 (en) * | 2004-09-30 | 2006-04-06 | Mcelvain Kenneth S | Apparatus and method for licensing programmable hardware sub-designs using a host-identifier |
US8321558B1 (en) * | 2009-03-31 | 2012-11-27 | Amazon Technologies, Inc. | Dynamically monitoring and modifying distributed execution of programs |
US20120033880A1 (en) * | 2011-10-13 | 2012-02-09 | University Of Dayton | Image processing systems employing image compression and accelerated image decompression |
US20130226764A1 (en) * | 2012-02-16 | 2013-08-29 | Marc Battyani | Fpga matrix architecture |
US20150301570A1 (en) * | 2014-01-22 | 2015-10-22 | Empire Techology Development, LLC | Detection of malware through voltage measurements of field programmable gate array |
Non-Patent Citations (1)
Title |
---|
ROEL MAES ET AL.: "A Pay-per-Use Licensing Scheme for Hardware IP Cores in Recent SRAM-Based FPGAs", 《IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY》 * |
Also Published As
Publication number | Publication date |
---|---|
CA3040887A1 (en) | 2018-04-26 |
WO2018075696A1 (en) | 2018-04-26 |
EP3513336A4 (en) | 2020-06-03 |
US20190250941A1 (en) | 2019-08-15 |
EP3513336A1 (en) | 2019-07-24 |
JP2019537784A (ja) | 2019-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110121709A (zh) | Fpga平台即服务(paas) | |
Liu et al. | Make web3. 0 connected | |
Song et al. | Normal forms for some classes of sequential spiking neural P systems | |
CN107247859B (zh) | 逻辑电路设计的验证方法、装置、电子设备及存储介质 | |
Malka | Vmcrypt: modular software architecture for scalable secure computation | |
CN110023905A (zh) | 联网可编程逻辑服务提供商 | |
CN109791518A (zh) | 从多租户环境中的fpga提取调试信息 | |
CN109791508A (zh) | 具有多个可重配置区域的可配置逻辑平台 | |
CN110088734A (zh) | 逻辑储存库服务 | |
CN101188624B (zh) | 基于虚拟机的网格中间件系统 | |
CN103582874B (zh) | 用于混合系统的统一的自适应ras | |
CN111492355B (zh) | 用于控制和/或监控装置的方法和控制系统 | |
US9038189B1 (en) | System and method for programming a trading system | |
CN113238929B (zh) | 基于Mock数据的代码测试方法、装置、电子设备及存储介质 | |
CN117688623A (zh) | 一种基于区块链的可信计算芯片 | |
Genius et al. | Virtual yet precise prototyping: An automotive case study | |
CN108965375A (zh) | 服务调用代理控制系统、方法、服务器及可读存储介质 | |
CN109359938A (zh) | 一种数据处理流程的优化方法、装置及终端设备 | |
CN109582569A (zh) | 信贷平台测试方法、装置、终端设备及可读存储介质 | |
da Silva Pinheiro et al. | Performance prediction for supporting mobile applications’ offloading | |
CN111651121A (zh) | 数据逻辑计算方法、装置、电子设备及存储介质 | |
CN114637682A (zh) | 一种saas系统接口云端调试方法、系统、设备及介质 | |
Li et al. | Formal and virtual multi-level design space exploration | |
Yoon et al. | System-level design of networks-on-chip for heterogeneous systems-on-chip | |
Ferscha et al. | Java based conservative distributed simulation |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190813 |