CN109314103B - 用于远程现场可编程门阵列处理的方法和装置 - Google Patents

用于远程现场可编程门阵列处理的方法和装置 Download PDF

Info

Publication number
CN109314103B
CN109314103B CN201680086306.0A CN201680086306A CN109314103B CN 109314103 B CN109314103 B CN 109314103B CN 201680086306 A CN201680086306 A CN 201680086306A CN 109314103 B CN109314103 B CN 109314103B
Authority
CN
China
Prior art keywords
fpga
kernel
computing node
fabric controller
fabric
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680086306.0A
Other languages
English (en)
Other versions
CN109314103A (zh
Inventor
N·A·萨尔华纳
K·库马尔
T·维尔哈姆
F·甘博纳特
N·兰加纳坦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN109314103A publication Critical patent/CN109314103A/zh
Application granted granted Critical
Publication of CN109314103B publication Critical patent/CN109314103B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17732Macroblocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5044Allocation 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/21Pc I-O input output
    • G05B2219/21109Field programmable gate array, fpga as I-O module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Automation & Control Theory (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)

Abstract

在一个实施例中,一种装置包括第一计算节点的结构控制器。结构控制器用于执行以下操作:从第二计算节点经由将第一计算节点耦合到第二计算节点的网络结构接收用于在第一计算节点的现场可编程门阵列(FPGA)上执行内核的请求;命令FPGA执行内核;以及经由网络结构将内核的执行的结果发送到第二计算节点。

Description

用于远程现场可编程门阵列处理的方法和装置
技术领域
概括而言,本公开内容涉及计算机开发领域,并且更具体而言,涉及远程现场可编程门阵列(FPGA)处理。
背景技术
计算节点可以包括一个或多个处理器、一个或多个存储器设备以及一个或多个FPGA。计算节点还可以经由网络结构耦合到一个或多个其他计算节点。在各种实施例中,处理器的核心可以将计算请求卸载到FPGA。
附图说明
图1示出了根据某些实施例的计算机系统的组件的框图。
图2示出了根据某些实施例的结构控制器的示例性框图。
图3示出了根据某些实施例的FPGA的示例性框图。
图4示出了根据某些实施例的示例性可用性检查流程。
图5示出了根据某些实施例的示例性注册流程。
图6示出了根据某些实施例的示例性运行流程。
图7示出了根据某些实施例的用于代表远程计算节点执行FPGA处理的示例性流程。
各附图中同样的附图标记和名称指示同样的元素。
具体实施方式
尽管附图描绘了特定的计算机系统,但是各种实施例的构思适用于任何合适的集成电路和其他逻辑器件。其中可以使用本公开内容的教导的设备的示例包括桌上型计算机系统、服务器计算机系统、大型计算机系统、存储系统、手持式设备、平板计算机、其他薄笔记本、片上系统(SOC)设备和嵌入式应用。手持式设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行以下教导的功能和操作的任何其他系统。
图1示出了根据某些实施例的计算机系统100的组件的框图。系统100可以包括经由网络结构104彼此耦合的任何合适数量的计算节点102。节点102可以包括任何合适数量的处理器106、存储器设备108、FPGA 112、控制器(例如,118、120或122)和/或其他组件。系统100可以代表任何合适的计算环境,例如高性能计算环境、数据中心、通信服务提供者基础设施(例如,演进型分组核心的一个或多个部分)、内存计算环境、其他计算环境、或其组合。
在特定的计算环境中,低延时数据处理非常重要。例如,各种解决方案可以涉及从传感器或端点获得数据并且将数据发送到一组服务器以进行分析。响应于分析,决定被做出并被执行。低延时数据处理在各种各样的应用中重要,包括自动驾驶汽车、欺诈检测、国家安全应用和金融交易等等。为了实现高带宽和低延时,可以尽可能快地传送去往和来自计算元件的数据,并且可以尽可能快地处理数据。在各种实施例中,FPGA可以通过加速具有数据并行性的专用应用来促进低延时数据处理。
在各种系统中,各种不同计算节点上的FPGA可以由中央实体或其他逻辑来编程。当计算节点上的FPGA被编程(或重新编程)时,中央实体或其他逻辑可以将比特流(其将FPGA配置为执行期望的算法)传送到计算节点的处理器(例如,CPU),并且处理器将对FPGA进行编程。然而,通过处理器对FPGA进行编程会增加延时。
在各种实施例中,计算机系统100中的计算节点102中的至少一些包括一个或多个FPGA。在各种实施例中,特定计算节点(例如,102A)的组件(例如,核心110或处理器106)可以利用远程计算节点(例如,计算节点102B或102C)上的FPGA。本文中,关于特定计算节点(或其组件),远程FPGA可以指代位于不同计算节点上的FPGA。作为一个示例,FPGA112D-F是关于计算节点102A及其组件的远程FPGA,而FPGA 112A-C是关于计算节点102A及其组件的本地FPGA。作为利用远程FPGA的计算节点的示例,当计算节点消费其所有FPGA资源时,其可以通过使用另一计算节点的FPGA来进一步加速其处理。在其他实施例中,计算节点可以不包括FPGA(或者可以不包括适合于特定任务的FPGA),并且可以从不同的计算节点请求FPGA资源。
计算节点102可以经由网络结构(其可以是低延时互连结构)耦合在一起。为了在网络结构上进行通信,计算节点可以包括一个或多个结构控制器122。在特定实施例中,计算节点的结构控制器122能够直接对计算节点102的FPGA进行编程(例如,不利用计算节点102的处理器106来对FPGA进行编程)。在各种实施例中,结构控制器122还能够指导FPGA执行在FPGA上编程的算法(在本文中被称为内核),而不与计算节点的处理器106进行交互。在特定实施例中,结构控制器122还能够直接与FPGA交互以确定编程状态(例如,哪些内核被编程和/或正在FPGA上被运行)。
各种实施例可以提供特定的技术优点,例如减少被发送到远程计算节点的FPGA请求中涉及的延时(例如,通过消除远程计算节点上的处理器(即,CPU)干预)。其他技术优点可以包括允许FPGA被视为汇集的资源(pooled resource),其中,参与外扩(scale-out)架构的计算节点102可以在网络结构上访问FPGA。其他技术优点可以包括允许分布式解决方案协调复杂情况,其中,一个或多个计算节点注册(即,发起对其的编程)一组内核并且其余计算节点可以运行内核。其他技术优点包括允许计算节点快速发现哪些内核当前被编程和/或可由计算机系统100中的每个FPGA编程。其他技术优点可以包括允许做出关于FPGA资源使用和汇集的自适应和智能决策(从而减少了FPGA重新编程的量)。
计算机系统100可以包括实现任何数量的存储器相干域的任何合适数量的计算节点102。在存储器相干域中,在多个核心110、处理器106或节点102之间始终保持存储器地址空间。在特定实施例中,系统100的每个节点102实现相干域。在其他实施例中,相干域可以由共享相同地址空间(对于给定节点,其可以包括节点的地址空间的全部或一部分)的一组节点102形成。使用网络结构104,计算节点102可以将其一些或全部地址区域暴露给其他节点(其可以正在实现它们自己的相干域)。在各种实施例中,计算节点102可以实现一个以上的相干域,并且任何数量的相干域可以是可由其他计算节点的处理器106访问的。在各种实施例中,计算节点102可以包括一个或多个套接口,每个所述套接口都包括处理器。在特定实施例中,计算节点102可以包括电路板,所述电路板包括用于节点的每个处理器106的套接口。
处理器106可以包括任何合适的处理器,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、片上系统(SOC)或用于执行代码(即,软件指令)的其他设备。在所描绘的实施例中,处理器106包括四个处理元件(例如,核心110A-110D),其可以包括不对称处理元件或对称处理元件。然而,处理器可以包括可以是对称或不对称的任何数量的处理元件。
在一个实施例中,处理元件指代用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核心和/或能够保存处理器的状态(例如,执行状态或架构状态)的任何其他元件。换言之,在一个实施例中,处理元件指代能够独立地与代码相关联的任何硬件,所述代码例如软件线程、操作系统、应用或其他代码。物理处理器(或处理器套接口)通常指代集成电路,其潜在地包括任何数量的其他处理元件,例如核心或硬件线程。
核心110可以指代位于能够维持独立架构状态的集成电路上的逻辑,其中,每个独立维持的架构状态与至少一些专用执行资源相关联。硬件线程可以指代位于能够维持独立架构状态的集成电路上的任何逻辑,其中,独立维持的架构状态共享对执行资源的访问。如可以看出的,当某些资源被共享而其他资源专用于架构状态时,硬件线程和核心的命名法之间的线重叠。然而,通常,操作系统将核心和硬件线程视为个别的逻辑处理器,其中,操作系统能够个别地调度每个逻辑处理器上的操作。
在各种实施例中,处理元件还可以包括一个或多个算术逻辑单元(ALU)、浮点单元(FPU)、高速缓存、指令流水线、中断处理硬件、寄存器或用于促进处理元件的操作的其他硬件。
计算节点102可以包括任何数量的FPGA 112。FPGA可以是可以包括可配置逻辑的半导体设备。可以经由具有定义逻辑如何被配置的任何合适格式的数据结构(例如,比特流)来对FPGA进行编程。在FPGA制造之后,FPGA可以被重新编程任何次数。
可以对FPGA 112的可配置逻辑进行编程以实现一个或多个内核。内核可以包括FPGA的配置逻辑,其可以接收一组一个或多个输入,使用配置的逻辑来处理该组输入,并且提供一组一个或多个输出。内核可以执行任何合适类型的处理。在各种实施例中,内核可以包括视频处理器、图像处理器、波形生成器、模式辨识模块、分组处理器、加密器、解密器、编码器、解码器、可操作以执行任何数量的操作的处理器(每个操作由不同的指令序列指定)或其他合适的处理功能单元。一些FPGA 112可以限于一次执行单个内核,而其他FPGA可以是能够同时执行多个内核的。在各种实施例中,FPGA 112可以将消息发送到耦合到FPGA的至少一个结构控制器122,以指示FPGA 112支持多少内核(例如,可以将多少内核加载到FPGA112上和/或FPGA 112可以同时执行多少内核)。
计算节点102的任何合适的实体可以对FPGA 112进行编程以实现一个或多个内核和/或执行一个或多个内核(即,将一个或多个输入参数提供给FPGA并命令FPGA基于输入参数来执行内核的功能)。例如,核心110、节点内通信控制器120或结构控制器122可以直接地(或通过另一组件间接地)用内核对FPGA进行编程或命令FPGA执行内核。在特定实施例中,FPGA 112可以直接地连接到核心(例如,如果FPGA与如由FPGA 112A示出的处理器集成)或者通过诸如I/O控制器之类的中间设备连接到核心(例如,FPGA可以通过PCI快速(PCIe)连接连接到处理器)。在一些实施例中,FPGA可以另外地或替代地直接(或通过中间设备)连接到驻留在与FPGA相同的计算节点102上的至少一个结构控制器122。
存储器设备108可以存储任何合适的数据,例如由处理器106或FPGA112使用的用于提供计算机系统100的功能的数据。例如,与被执行的程序或由核心110访问的文件相关联的数据可以存储在存储器设备108中。因此,存储器设备108可以包括系统存储器,其存储由核心110使用或执行的数据和/或指令序列。在各种实施例中,存储器设备108可以存储持久数据(例如,用户的文件或指令序列),即使在移除存储器设备108的电力之后,所述持久数据仍被存储。存储器设备108可以专用于特定处理器106或FPGA 112,或者与计算机系统100的其他设备(例如,一个或多个其他处理器或其他设备)共享。
在各种实施例中,存储器设备108可以包括存储器,所述存储器包括任何数量的存储器模块、存储器设备控制器和其他支持逻辑。存储器模块可以包括多个存储器单元,每个所述存储器单元可操作以存储一个或多个比特。存储器模块的单元可以以任何合适的方式来布置,例如以列和行或三维结构。可以将单元逻辑地分组成存储体、块、页面(其中,页面是块的子集)、子块、帧、字线、位线、字节或其他合适的组。
存储器模块可以包括非易失性存储器和/或易失性存储器。非易失性存储器是不需要电力来维持由介质存储的数据的状态的存储介质。非易失性存储器的非限制性示例可以包括以下各项中的任何一项或组合:固态存储器(例如,平面或3D NAND闪速存储器或NOR闪速存储器)、3D交叉点存储器、使用硫族化物相变材料(例如,硫属化物玻璃)的存储器设备、字节可寻址非易失性存储器设备、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器(例如,铁电聚合物存储器)、铁电晶体管随机存取存储器(Fe-TRAM)双向存储器、纳米线存储器、电可擦除可编程只读存储器(EEPROM)、其他各种类型的非易失性随机存取存储器(RAM)和磁存储存储器。在一些实施例中,3D交叉点存储器可以包括无晶体管的可堆叠交叉点架构,其中,存储器单元位于字线和位线的交叉处并且是可个别寻址的,并且其中,位存储基于体电阻的变化。在特定实施例中,具有非易失性存储器的存储器模块可以符合由联合电子设备工程委员会(JEDEC)颁布的一个或多个标准,例如JESD218、JESD219、JESD220-1、JESD223B、JESD223-1或其他合适的标准(本文引用的JEDEC标准可在www.jedec.org处获得)。
易失性存储器是需要电力以维持由介质存储的数据的状态的存储介质。易失性存储器的示例可以包括各种类型的随机存取存储器(RAM),例如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。可以在存储器模块中使用的一种特定类型的DRAM是同步动态随机存取存储器(SDRAM)。在特定实施例中,存储器模块的DRAM符合由JEDEC颁布的标准,例如用于双倍数据速率(DDR)SDRAM的JESD79F、用于DDR2SDRAM的JESD79-2F、用于DDR3SDRAM的JESD79-3F或用于DDR4SDRAM的JESD79-4A(这些标准可在www.jedec.org处获得)。
存储器设备108可以具有任何合适的形状因子。在特定实施例中,存储器设备108具有双列直插式存储器模块(DIMM)形状因子。DIMM可以包括安装在电路板上的多个存储器模块,所述电路板包括在电路板的每侧上的电触点(即,引脚)。在各种示例中,存储器设备108可以具有任何合适数量的引脚,例如288、260、244、240、204、200或其他合适数量的引脚。在各种实施例中,存储器设备108可以插入到电路板(例如,母板)上的DIMM插槽中,所述电路板还包括用于处理器106的套接口。在其他实施例中,存储器设备108可以具有任何其他合适的形状因子。
存储器设备108可以包括任何合适类型的存储器,并且不限于各种实施例中的存储器的特定速度或技术。存储器设备108可以包括任何合适的接口,其用于使用任何合适的通信协议(例如,基于DDR的协议、外围组件互连(PCI)、PCI快速(PCIe)、通用串行总线(USB)、串行附接的SCSI(SAS)、串行ATA(SATA)、光纤通道(FC)、系统管理总线(SMBus)或其他合适的协议)来与处理器的存储器控制器118或I/O控制器进行通信。在特定实施例中,存储器设备108可以包括多个通信接口,每个所述通信接口使用单独的协议与存储器控制器118和/或I/O控制器进行通信。
存储器控制器118是集成存储器控制器(即,它集成在与处理器106A相同的管芯或集成电路上),其包括用于控制去往和来自存储器设备108的数据流的逻辑。存储器控制器118可以包括可操作以从存储器设备108读取、写入存储器设备108或从存储器设备108请求其他操作的逻辑。在各种实施例中,存储器控制器118可以从核心110接收写入请求并且可以将这些请求中指定的数据提供给存储器设备108以存储在其中。存储器控制器118还可以从存储器设备108读取数据并且将读取的数据提供给I/O控制器或核心110。在操作期间,存储器控制器118可以发出包括存储器设备108的一个或多个地址的命令,以便从存储器读取数据或将数据写入存储器(或执行其他操作)。在一些实施例中,存储器控制器118可以在与处理器106A的管芯或集成电路不同的管芯或集成电路中被实现。
节点内通信控制器120提供用于节点内通信的接口。节点内通信控制器120可以耦合到互连,所述互连提供两个或更多个处理器(或处理器核心)之间和/或处理器或核心与处理器或核心本地的FPGA 112之间的传输路径。在各种实施例中,互连可以是点对点处理器互连,并且用于在互连上通信的协议可以具有英特尔超路径互连(UPI)、英特尔QuickPath互连(QPI)或其他已知或未来的节点内通信协议的任何合适的特性。在各种实施例中,节点内通信控制器120可以是UPI代理、QPI代理或能够管理节点内通信的类似代理。在各种实施例中,用于在处理器106之间通信的相同通信协议可以用于处理器内通信,例如核心110与FPGA 112之间的通信、核心110与结构控制器122之间的通信、或结构控制器与集成在处理器上的FPGA 112之间的通信、或其他节点内通信,例如结构控制器122(其可以或可以未集成在处理器上)和未集成在处理器上的FPGA(例如,FPGA112B或112C)之间的通信。
结构控制器122提供用于节点间通信的接口。在特定实施例中,结构控制器122可以充当代理,并且使远程节点(例如,102B)看起来是处理器(例如,106A),就像相同节点上的处理器。结构控制器122可以在由处理器106使用的通信协议和由网络结构104使用的通信协议之间桥接。在特定实施例中,这可以包括实现结构架构的物理层和链路层,以使得节点可以附接到网络结构并且将分组发送到其他节点和从其他节点接收分组。在各种实施例中,结构控制器122可以包括用于执行或加速上层协议的专用逻辑。在特定实施例中,结构控制器还可以对来自网络管理组件的消息进行响应。
在特定实施例中,结构控制器122A可以接收对远程FPGA的请求,并且在网络结构104上将相关联的请求发送到远程节点的结构控制器(例如,122B)。结构控制器122A还可以在网络结构上接收响应于这样的请求而提供的数据,并且将结果提供给请求实体(例如,核心110)。在一些实施例中,这可以涉及将结果存储在存储器设备108中以供请求实体检索。在特定实施例中,由结构控制器122跨网络结构104传送的请求是传输层请求(例如,根据开放系统互连模型的层4的请求)。
在各种实施例中,结构控制器122可以包括用于使用任何合适的物理层和数据链路层标准(例如,以太网(例如,如由IEEE 802.3标准定义的)、光纤通道、InfiniBand、英特尔Omni-Path主机结构接口(HFI)或其他合适的标准)来通信的逻辑。结构控制器122可以包括或耦合到可以耦合到电缆的一个或多个物理端口(例如,以太网电缆、Infiniband电缆、QSFP28电缆或其他合适的电缆)。
在各种实施例中,结构控制器122可以包括主机总线适配器(例如,InfiniBand主机通道适配器)、网络接口控制器(例如,以太网控制器)、HFI适配器或可操作以管理处理器106与网络结构104之间的通信的其他合适的控制器。
在各种实施例中,结构控制器122可以集成在与处理器106相同的管芯或集成电路上。在其他实施例中,结构控制器122可以位于管芯之外(例如,在可插入套接口或节点102的插槽中的芯片或卡上)。在各种实施例中,结构控制器122可以专用于单个处理器106或者在相同节点102的多个处理器106之间被共享。在特定实施例中,结构控制器122可以直接与处理器106的其他组件对接。在另一实施例中,结构控制器122可以通过I/O控制器(例如,以下描述的I/O控制器)与处理器106的组件对接。
网络结构104可以是使用一个或多个合适的网络协议来操作的任何合适的网络。网络结构104可以代表用于接收和发送信息分组的一系列互连的通信路径。在各种实施例中,网络结构104可以是交换的结构,其经由一个或多个网络交换机(例如,纵横交换机)连接各种节点102的任何数量的结构控制器122。在各种实施例中,网络结构104可以在结构控制器122之间提供点对点连接。在特定实施例中,网络结构104在物理上与计算节点102共置。例如,计算节点102和网络结构104可以位于相同机架或机箱中,或位于相同物理建筑内。
网络结构104可以包括任何合适的网络结构,例如以太网结构、英特尔Omni-Path结构、英特尔True Scale结构、基于InfiniBand的结构(例如,Infiniband增强型数据速率结构)、RapidIO结构或其他合适的网络结构。在其他实施例中,网络结构104可以包括任何其他合适的板到板或机箱到机箱互连。
尽管未描绘,但是在各种实施例中,处理器106可以包括或耦合到一个或多个I/O控制器,所述I/O控制器包括用于在处理器106与I/O设备之间传送数据的逻辑,其可以指代能够将数据传送到电子系统和/或从电子系统接收数据的任何合适的设备,例如处理器106。例如,I/O设备可以是结构控制器122;FPGA 112;音频/视频(A/V)设备控制器,例如图形加速器或音频控制器;数据存储设备控制器,例如闪速存储器设备、磁存储盘或光存储盘控制器;无线收发器;网络处理器;网络接口控制器;或用于另一输入设备的控制器,所述另一输入设备例如监视器、打印机、鼠标、键盘或扫描仪;或其他合适的设备。
I/O设备可以使用任何合适的信令协议与处理器106的I/O控制器通信,所述信令协议例如外围组件互连(PCI)、PCI快速(PCIe)、通用串行总线(USB)、串行附接的SCSI(SAS)、串行ATA(SATA)、光纤通道(FC)、IEEE 802.3、IEEE 802.11或其他当前或未来的信令协议。在各种实施例中,耦合到I/O控制器的I/O设备可以位于芯片外(即,不在与处理器106相同的集成电路或管芯上),或者可以集成在与处理器106相同的集成电路或管芯上。
尽管未描绘,但系统100可以使用电池、可再生能量转换器(例如,太阳能或基于运动的能量)和/或电源插座连接器和相关联的系统来接收电力,使用显示器来输出由一个或多个处理器106提供的数据,或使用允许处理器106在网络上通信的网络接口。在各种实施例中,电池、电源插座连接器、显示器和/或网络接口可以通信地耦合到处理器106。
节点102的组件可以以任何合适的方式耦合在一起。例如,总线可以将组件中的任何组件耦合在一起。总线可以包括任何已知的互连,例如多点总线、网状互连、环形互连、点对点互连、串行互连、并行总线、相干(例如,高速缓存相干)总线、分层协议架构、差分总线、Gunning收发器逻辑(GTL)总线或其他类型的互连。
图2示出了根据某些实施例的结构控制器122的示例性框图。在所描绘的实施例中,结构控制器122包括结构接口控制器202、FPGA控制逻辑206、内核表208、FPGA控制器214和存储器控制器216。在各种实施例中,结构控制器122可以管理驻留在与结构控制器122相同(例如,耦合到与结构控制器122相同的电路板上)的计算节点上的一个或多个FPGA。
结构接口控制器202包括适合于允许结构控制器122与网络结构104和计算节点102的各种组件(例如,核心110)对接的逻辑。结构接口控制器202可以包括用于提供以上描述的结构控制器122的功能中的任何一个的逻辑。除了提供这样的功能的逻辑之外,结构接口控制器202还包括FPGA协议逻辑204,其用于处理远程节点上的对FPGA的请求和从远程节点接收的对本地FPGA的请求。在特定实施例中,FPGA协议逻辑204还可以处理从本地组件(例如,核心110)接收的对本地FPGA的请求。
FPGA协议逻辑204可以是能够处理与FPGA的使用相关联的各种请求(在本文中被称为“FPGA请求”)的,并且使来自这样的请求的结果被发送回或以其他方式可用于请求实体。这样的请求可以包括(但不限于):可用性检查请求,其允许请求实体检查哪些内核当前被编程和/或可用于在远程FPGA上被编程(或者由请求实体指定的特定内核是否在一个或多个FPGA上被编程);注册请求,其允许请求实体请求对远程FPGA上特定内核的编程;运行请求,其允许请求实体用由请求实体指定的输入在远程FPGA上运行特定内核;以及释放请求,其允许经编程的内核被驱逐以释放用于不同内核的空间。
FPGA控制逻辑206管理内核表208。FPGA控制逻辑206负责控制对内核表208的访问、注册内核和驱逐内核。例如,FPGA控制逻辑206可以通过FPGA协议逻辑204来接收检查可用性请求。检查可用性请求可以询问由结构控制器122管理的FPGA是否用在请求中指定的特定内核来被编程,或者替代地可以询问哪些内核在由结构控制器管理的FPGA上被编程。FPGA控制逻辑206可以获得用于对请求进行响应的必要信息,并且将该信息提供给FPGA协议逻辑204以供应给请求实体。作为另一示例,FPGA控制逻辑206可以通过FPGA协议逻辑204来接收注册请求,以注册要在由结构控制器122管理的FPGA上被编程的内核。作为响应,FPGA控制逻辑206可以确定由结构控制器122管理的FPGA是否可以用所请求的内核来编程。例如,逻辑206可以确定每个FPGA是否已经用最大数量的内核来编程。如果FPGA是可用于用所请求的内核来编程的,则FPGA控制逻辑206可以在内核表208的条目中将对内核的指示与FPGA相关联。如果所有可用的FPGA在注册请求被接收时用最大数量的内核来编程,则逻辑206可以确定当前经编程的内核是否应当被驱逐。一旦选择内核以进行驱逐并且该内核已经完成执行(如果内核当前正在被运行),则可以在被驱逐的内核的地方对新内核进行注册和编程。将结合图7更详细地描述驱逐选择过程。
如以上描述的,结构控制器122可以存储可以由FPGA控制逻辑206管理的内核表208。内核表包括对当前在由结构控制器122管理的一个或多个FPGA上被编程的内核的指示。在特定实施例中,内核可以包括特定数量的条目,其中,每个条目都与FPGA相关联并且可以存储对在相关联的FPGA上编程的内核的指示。因此,内核表208可以包括多个条目,所述条目的数量等于在特定时刻可以被编程到由结构控制器管理的FPGA上的内核的数量。在特定实施例中,条目的一部分(即,本地内核条目210)被预留以用于由与结构控制器122位于相同计算节点102上的请求实体(例如,核心110)注册的内核,并且其余条目(即,远程内核条目)被预留以用于由位于远程计算节点102上的请求实体注册的内核。
内核表208的条目可以包括任何合适的信息。例如,条目可以包括注册的内核的唯一标识符(ID)。在各种实施例中,每个注册的内核都包括唯一ID,以使得在计算机系统100的结构控制器中的任何一个上注册的两个内核都不具有相同的ID。在各种实施例中,结构控制器122可以为内核表条目指派ID。在其他实施例中,请求注册内核的实体(例如,核心110)可以指派ID。在其他实施例中,计算机系统100的任何合适的实体可以指派ID。
在一些实施例中,内核表208的条目可以包括内核的另外的标识符(例如,内核类型标识符)。在一些实施例中,可以使可用于跨计算机系统100编程的内核列表可用于每个计算节点。列表可以指定与每个可用内核相关联的任何合适的信息,例如内核类型标识符(其可以是当内核向结构控制器122注册时将被包括在内核表208的条目中的内核的另外的标识符)、对内核功能的文本描述、对内核的预期输入参数(包括格式化)的描述、对内核的输出参数(包括格式化)的描述、可以在FPGA上编程以实现内核的实例(或其中数据结构被存储的计算节点102的存储器中的位置)的数据结构(例如,比特流)或者与内核相关联的其他合适的信息。
因此,在一些实施例中,内核表208的条目可以包括注册的内核的第一标识符(即,内核类型标识符),其对于在计算机系统100的一个或多个结构控制器122中注册的相同内核的任何实例以及唯一地标识注册的内核的第二标识符可以是共同的。因此,如果在计算机系统100中注册了相同内核的多个实例(在相同的结构控制器122中或在不同的结构控制器122中),则对应的内核表条目均可以包括内核的在两个表条目中相同的第一标识符和内核的在表条目中唯一的第二标识符。在替代实施例中,内核表208的条目可以包括单个标识符,所述单个标识符具有包括内核类型标识符的第一部分和唯一地标识相关联的内核的特定实例的另一部分。
内核表208的条目还可以包括与被编程到FPGA中以实现内核的数据结构(例如,比特流)相关联的信息。在一些实施例中,该信息可以包括数据结构本身。在其他实施例中,该信息可以包括存储器中的位置(或允许标识数据结构的其他信息)。
内核表208的条目还可以包括指示注册的内核当前是否正在相关联的FPGA中被执行的指示(其可以被存储在单个位或另一数据结构中)、指示注册的内核是否已被执行至少一次的指示(其可以用单个位来存储或被存储在另一数据结构中)、对内核年龄的指示、对内核被执行的最后一次的指示、对内核已被执行多少次的指示、和/或与内核的使用相关联的其他合适的信息。FPGA控制逻辑206可以使用这样的信息来确定内核是否可以被运行、是否驱逐内核、在用于请求的所有可用条目已满时驱逐哪个内核。
在各种实施例中,内核表的条目可以包括与内核相关联的其他合适的信息,例如用于内核的运行的输入参数或输出参数要被存储在哪里、预期的输入参数或输出参数的大小、或其他合适的信息。
在特定实施例中,内核表208的条目还可以包括用于相关联的内核的请求队列,以使得如果在针对内核的运行请求被接收时正在执行内核,则可以存储请求的参数,并且在内核变得可用时可以运行内核。队列可以存储任何合适数量的请求。
FPGA控制器214包括用于与FPGA 112通信以便使FPGA 112对指定的内核进行编程的逻辑。在特定实施例中,FPGA控制器214可以是可操作而以FPGA预期的格式将数据结构发送到FPGA的,所述数据结构将FPGA配置为实现内核。在其他实施例中,FPGA控制器214可以发送对哪个内核用于编程到FPGA的指示(例如,存储器中的数据结构的地址和长度),并且FPGA可以从存储器检索数据结构并且基于数据结构来对其自身进行编程。FPGA控制器214还可以包括用于命令FPGA 112运行具有特定输入参数的内核的逻辑(其中,参数或参数在存储器中的位置可以从结构控制器122发送到FPGA 112)。FPGA控制器还可以从FPGA接收一个或多个信号,例如运行的输出或关于特定对内核的编程或对内核的运行完成的指示。
在各种实施例中,FPGA控制器214可以以任何合适的方式连接到FPGA。例如,FPGA控制器214可以经由一系列导线直接连接到FPGA。作为另一示例,FPGA控制器214可以经由用于将相同计算节点的处理器耦合在一起的相同类型的互连(例如,UPI)连接到FPGA。作为另一示例,FPGA控制器214可以经由处理器的I/O控制器连接到FPGA。
存储器控制器216可以具有以上描述的存储器控制器118的特性中的任何一个,并且可以使结构控制器能够写入结构控制器122的计算节点的存储器并从中读取。在各种实施例中,结构控制器122可以替代地利用处理器的存储器控制器118来访问存储器。在特定实施例中,结构控制器122可以与结构控制器管理的FPGA共享地址空间。结构控制器可以代表请求实体存储来自该地址空间的用于FPGA操作的输入或输出参数并且从该地址空间检索用于FPGA操作的输入或输出参数。
图3示出了根据某些实施例的FPGA 112的示例性框图。在所描绘的实施例中,FPGA112包括可配置逻辑302、操作逻辑304、节点内通信控制器306、结构控制器接口308和存储器控制器310。可配置逻辑302包括可以被配置为实现一个或多个内核的逻辑。可配置逻辑302可以包括任何合适的逻辑,例如任何合适类型的逻辑门(例如,与(AND)门、异或(XOR)门)或逻辑门的组合(例如,触发器、查找表、加法器、乘法器、复用器、解复用器)。在一些实施例中,(至少部分地)通过FPGA的逻辑组件之间的可编程互连来配置逻辑。
操作逻辑304可以访问定义内核的数据结构,并且基于数据结构来配置可配置逻辑302并执行FPGA的其他操作。在一些实施例中,基于数据结构将控制位写入存储器(例如,非易失性闪速存储器或基于SRAM的存储器),并且控制位操作以配置逻辑(例如,通过激活或去激活可配置逻辑的部分之间的特定互连)。操作逻辑可以包括任何合适的逻辑(其可以在可配置逻辑或固定逻辑中被实现),例如一个或多个存储器设备,包括任何合适类型的存储器(例如,随机存取存储器(RAM))、一个或多个收发器、时钟电路、位于FPGA上的一个或多个处理器、一个或多个控制器或其他合适的逻辑。
节点内通信控制器306可以具有以上描述的节点内通信控制器120的特性中的任何一个,并且可以使FPGA 112能够经由那些组件的对应的节点内通信控制器120与相同计算节点102的其他组件(例如,核心110)通信。结构控制器接口308可以具有以上描述的结构接口控制器202的特性中的任何一个,并且可以使FPGA能够与一个或多个结构控制器122通信。存储器控制器310可以具有存储器控制器118的任何合适的特性并且可以使FPGA能够从计算节点的存储器读取数据或将数据写入计算节点的存储器。在各种实施例中,存储器控制器310可以包括直接存储器访问(DMA)控制器。
图4示出了根据某些实施例的示例性可用性检查流程400。在图4-6中描述的流程中,描绘了通用命令接口,其中,从核心110发送到结构控制器122A的FPGA请求不包括FPGA请求的所有参数,但是可以包括指向存储在可由处理器106访问的存储器中的参数的一个或多个指针(例如,与驻留在远程计算节点上的核心或存储器设备108驻留在相同计算节点102上的存储器设备108的存储器地址)。这些参数可以在将FPGA请求发送到结构控制器122A之前被写入本地存储器或远程存储器(经由结构控制器122A和网络结构104)。FPGA请求还可以包括指向其中要写入FPGA请求的结果的存储器中的一个或多个位置的一个或多个指针。响应于接收到通用命令,结构控制器122A可以从相应的存储器设备(例如,108)中检索命令的参数,并且在网络结构104上在结构FPGA请求中将参数连同FPGA请求一起发送到结构控制器122B。替代地,如果参数被存储在远程计算节点102处(例如,这些参数可以在发送结构FPGA请求之前在结构上被传送到这样的存储器),则指针可以在网络结构104上被发送到结构控制器122B,以允许结构控制器122B或远程FPGA 112检索参数。
在各种实施例中,通用命令接口可以允许对将命令的描述置于固件中,从而允许可以根据处理器需要被重写的可定制指令。在这样的实施例中,当处理器的实体(例如,结构控制器122A)接收到通用命令时,它可以从存储器(例如,存储器设备108或处理器的其他存储器)中读取对命令的描述并且根据说明处理命令。这样的实施例可以允许使用任何数量的命令而不扩展由用于在处理器106内发送FPGA或其他请求(例如,存储器请求)的协议支持的消息的数量。尽管描绘了使用通用命令接口的流程,但可以使用用于生成FPGA请求(例如,通过核心)并且将FPGA请求传递到结构控制器122A的任何合适的流程(例如,可以在从核心到结构控制器122A的FPGA请求中发送参数)。虽然核心110被描绘为生成FPGA请求,但是计算节点102的任何合适的处理元件可以是可操作以生成FPGA请求的。
在流程400的402处,核心110(或计算节点的其他逻辑)生成可用性检查FPGA请求并且将请求发送到结构控制器122A。可用性检查FPGA请求可以用于请求当前在远程计算节点的FPGA上被编程的内核列表、由特定远程结构控制器122管理的FPGA或特定远程FPGA。因此,与FPGA请求相关联的参数可以指定请求应用于的远程计算节点、远程结构控制器和/或远程FPGA。在一些实施例中,可用性检查FPGA请求可以指定特定内核类型ID,并且请求被发送到的结构控制器可以用对是否在由结构控制器管理的FPGA上编程特定内核类型的实例的指示来进行响应。在各种实施例中,可用性检查FPGA请求可以包括与请求相关联的参数的一个或多个存储器地址以及其中要存储可用性检查请求的结果的一个或多个存储器地址。
在404处,结构控制器122A提取用于请求的参数(例如,通过从存储器中检索参数)。在406处,结构控制器122A根据与网络结构兼容的消息语法来格式化包括所检索的参数(例如,请求所针对的实体的标识符和内核类型标识符)的FPGA请求,并且在406处将所得的结构FPGA可用性检查请求发送到适当的结构控制器122B(或如果适用,则发送到多个远程结构控制器)。
在408处,远程计算节点的结构控制器122B检查其内核表并用所请求的信息来生成响应。例如,响应可以包括来自以上描述的内核表的任何合适的信息,例如当前向结构控制器122B注册的内核的列表、内核当前是否正被执行、或者与内核相关联的任何其他合适的信息(例如,内核的标识符)。作为另一示例,响应可以包括对在请求中指定的内核类型的实例是否在结构控制器122B处被注册的指示以及与任何这样的经注册的内核相关联的任何合适的信息。作为又一示例,响应可以包括指出由结构控制器122B管理的一个或多个FPGA不可由请求实体访问的指示。响应根据与网络结构兼容的消息语法来格式化,并且在410处被发送到结构控制器122A。结构控制器122A然后可以在412处将响应提供给请求实体(例如,核心110)。在一些实施例中,这可以涉及将输出参数(例如,关于内核的信息)写入存储器以供核心110在402处接收的FPGA请求中指定的位置处进行检索。在其他实施例中,可以以任何其他合适的方式将输出参数提供给核心110。
图4中描述的流程仅仅代表可以在特定实施例中发生的操作或通信。在其他实施例中,可以执行另外的操作或在系统100的组件之间发送另外的通信。本公开内容的各种实施例预期了用于实现本文描述的功能的任何合适的信令机制。图4中示出的通信或其他操作中的一些在适当的情况下可以被重复、组合、修改或删除。另外,在不脱离特定实施例的范围的情况下,可以以任何合适的次序执行操作。
图5示出了根据某些实施例的用于执行示例性注册流程500的示例性流程。在502处,核心110(或计算节点的其他逻辑)生成注册FPGA请求并且将请求发送到结构控制器122A。注册FPGA请求可以用于请求将特定内核编程到远程FPGA上。注册FPGA请求可以与以下各项相关联:任何合适的参数(例如,远程计算节点、结构控制器122B和/或内核被编程到其上的FPGA 112的标识符)、用于被编程以实现内核(或其允许远程结构控制器122B或FPGA检索数据结构的标识或位置)的数据结构(例如,比特流)、与内核相关联的元数据(例如,用于内核的输入参数的规范以及参数应当如何被格式化)、内核的一个或多个标识符(例如,内核类型标识符或内核的唯一标识符)和/或其他合适的参数。在各种实施例中,注册FPGA请求可以包括与请求相关联的参数的一个或多个存储器地址以及其中要存储注册请求的结果的一个或多个存储器地址。
在504处,结构控制器122A提取用于请求的参数(例如,通过从存储器中检索参数)。在506处,结构控制器122A根据与网络结构兼容的消息语法来格式化包括所检索的参数(例如,请求所针对的实体的标识符和包括其他参数的有效载荷)的注册FPGA请求,并且在506处将所得的结构FPGA注册请求发送到适当的结构控制器122B。
在508处,远程计算节点102的结构控制器122B处理注册请求。在特定实施例中,结构控制器122B可以验证用于内核的数据结构的大小不超过支持的大小。在一些实施例中,在注册内核之前,结构控制器122B可以确定内核表208是否包括用于内核的可用条目。如果内核表208不包括可用条目,则结构控制器122B可以确定是否从条目中驱逐内核以便注册进入的内核。
如果结构控制器122B确定可以注册内核,则用与内核相关联的信息来填充内核表条目,所述信息例如用于实现内核的数据结构、内核被注册的时间、内核要在其上被编程的FPGA、内核的一个或多个ID、或与内核相关联的其他合适信息。在一些实施例中,注册还可以涉及用内核来编程适当的FPGA。在其他实施例中(例如,在图6中描绘的实施例中),可以延迟对内核的编程直到用于运行内核的请求被接收。在任何情况下,注册请求可以被视为用于在FPGA上对内核进行编程的请求。
结构控制器122B还可以生成结构FPGA响应并且在510处将响应发送到结构控制器122A。响应可以指示注册是否成功以及与注册相关联的任何合适的信息,例如,内核的唯一标识符(如果请求实体未提供唯一标识符的话)。响应根据与网络结构兼容的消息语法来格式化。然后,结构控制器122A可以在512处将响应提供给请求实体(例如,核心110)。在一些实施例中,这可以涉及将响应的参数写入存储器以供核心110在502处接收的FPGA请求中指定的位置处进行检索。在其他实施例中,输出参数可以以任何其他合适的方式被提供给核心110。
图5中描述的流程仅仅代表可以在特定实施例中发生的操作或通信。在其他实施例中,可以执行另外的操作或在系统100的组件之间发送另外的通信。本公开内容的各种实施例预期了用于实现本文描述的功能的任何合适的信令机制。图5中示出的通信或其他操作中的一些在适当的情况下可以被重复、组合、修改或删除。另外,在不脱离特定实施例的范围的情况下,可以以任何合适的次序执行操作。
图6示出了根据某些实施例的示例性运行流程600。在602处,核心110(或计算节点的其他逻辑)生成运行FPGA请求并且将请求发送到结构控制器122A。运行FPGA请求可以用于请求在远程FPGA上对特定内核的执行。运行FPGA请求可以与任何合适的参数相关联,例如远程计算节点、结构控制器122B和/或内核要在其上被运行的FPGA 112的标识符、要被运行的内核的标识符、要被提供给远程FPGA以用于运行的输入参数或其他合适的参数。在各种实施例中,运行FPGA请求可以包括与请求相关联的参数的一个或多个存储器地址以及其中要存储运行请求的结果的一个或多个存储器地址。
在604处,结构控制器122A提取用于请求的参数(例如,通过从存储器中检索参数)。在606处,结构控制器122A根据与网络结构兼容的消息语法来格式化包括所检索的参数(例如,请求所针对的实体的标识符和包括其他参数的有效载荷)的注册FPGA请求并且在606将所得的结构FPGA运行请求发送到适当的结构控制器122B。
在608处,结构控制器122B可以验证在请求中标识的内核在结构控制器122B处被注册。内核可以在本地内核条目210中被注册(即,内核可以已经由结构控制器122B本地的实体注册)或远程内核条目212中被注册(即,内核可以已经由结构控制器122B远程的实体注册,其中,实体可以是请求运行的相同实体或相同计算节点102或不同计算节点102上的不同实体)。在各种实施例中,内核可以由特定请求实体(其可以在结构控制器122B本地或远程)注册,并且然后可以由各种计算节点102的其他请求实体运行。在各种实施例中,结构控制器122B还可以确定用于运行的输入参数是否与预期的格式(例如,如在注册FPGA请求中提供的元数据中指定的)(包括预期的大小)相匹配。
在610处,结构控制器命令FPGA对内核进行编程,并且将用于内核的数据结构或对数据结构的指示(例如,存储器地址和数据结构的大小)发送到FPGA。在各种实施例中,结构控制器可以等待从FPGA接收对内核的编程已完成的确认。在特定实施例中,用于对内核进行编程的请求可以从结构控制器被发送到FPGA,而没有来自包括结构控制器122B和FPGA的计算节点的核心110的任何参与。例如,用于对内核进行编程的请求可以在没有任何中间节点的情况下直接从结构控制器122B发送到FPGA(或者可以经过处理器的I/O控制器,但不经过核心110)。
结构控制器122B可以生成用于特定运行的事务标识符,并且可以与FPGA 112通信以使FPGA 112能够在612处用指定的输入参数来执行内核。在各种实施例中,结构控制器122B可以检索来自存储器的输入参数并且将输入参数传递给FPGA 112。在其他实施例中,FPGA 112可以将输入参数的一个或多个地址和/或大小发送到FPGA 112,并且FPGA 112可以从存储器中检索输入参数。在又一实施例中,FPGA 112可以被预先配置为在运行特定内核时从适当的存储器地址检索输入参数(例如,存储器地址可以专用于存储用于特定内核的输入参数)。类似地,结构控制器122B可以将一个或多个地址(或其他标识符)传递给FPGA112,以命令FPGA 112将运行的结果存储在地址处,或者FPGA 112可以被预先配置为将运行的结果存储在存储器中的特定位置处。在特定实施例中,用于运行内核的请求可以从结构控制器发送到FPGA,而没有来自包括结构控制器122B和FPGA的计算节点的核心110的任何参与。例如,用于运行内核的请求可以在没有任何中间节点的情况下直接从结构控制器122B发送到FPGA(或者可以经过处理器的I/O控制器,但不经过核心110)。
结构控制器122B还可以生成结构FPGA响应并且在614处将响应发送到结构控制器122A。响应可以指示与运行相关联的任何合适的信息,例如为运行指派的事务标识符。在各种实施例中,响应可以指示运行请求已经开始。在其他实施例中,响应可以在运行已完成之后被发送,可以指示运行完成,并且可以包括输出参数(或其标识)。响应根据与网络结构兼容的消息语法来格式化。然后,结构控制器122A可以在616处将响应提供给请求实体(例如,核心110)。在一些实施例中,这可以涉及将响应的参数写入存储器以供核心110在602处接收的FPGA请求中指定的位置处进行检索。在其他实施例中,输出参数可以以任何其他合适的方式被提供给核心110。
在各种实施例中,请求实体(例如,核心110)还可以经由检查运行FPGA请求来检查运行的状态(在替代实施例中,结构控制器122B可以周期性地检查运行是否已经完成,并且然后主动发送关于请求已完成的指示,并且将输出发送到请求实体)。在618处,核心110(或计算节点的其他逻辑)生成检查运行FPGA请求并且将请求发送到结构控制器122A。检查运行FPGA请求可以与任何合适的参数相关联,所述参数例如远程计算节点、结构控制器122B和/或内核在其上被编程的FPGA 112的标识符、内核的标识符、运行的事务标识符或其他合适的参数。
在620处,结构控制器122A根据与网络结构兼容的消息语法来格式化检查运行FPGA请求,并且将所得的结构FPGA检查运行请求发送到适当的结构控制器122B。在622处,结构控制器122B检查运行是否已完成。这可以以任何合适的方式来完成。在特定实施例中,结构控制器122B可以访问预定义的存储器地址(预留的地址空间),所述地址保存整数值,所述整数值指示FPGA是否已完成执行内核或错误代码(如果在运行期间错误发生的话)。在另一实施例中,FPGA可以在运行已完成时或错误发生时将消息发送到结构控制器122B。
结构控制器122B还可以生成结构FPGA响应并且在624处将响应发送到结构控制器122A。响应可以指示运行是否已经成功完成。在一些实施例中,如果运行未成功完成,则响应可以包括错误代码。响应根据与网络结构兼容的消息语法来格式化。然后,结构控制器122A可以在624处将响应提供给请求实体(例如,核心110)。
在内核已完成之后,可以以任何合适的方式将运行的输出提供给请求实体。在特定实施例中,结构控制器122B可以从预先安排的存储器地址检索运行的输出。在各种实施例中,与内核相关联的元数据可以指定结果的大小,以允许结构控制器122B正确地检索结果。在其他实施例中,FPGA可以将结果发送到结构控制器122B。然后可以经由网络结构104和结构控制器122A将结果提供给请求实体(例如,可以将结果写入与请求实体相同的计算节点上的存储器或以任何其他合适的方式提供给请求实体)。
图6中描述的流程仅仅代表可以在特定实施例中发生的操作或通信。在其他实施例中,可以执行另外的操作或在系统100的组件之间发送另外的通信。本公开内容的各种实施例预期了用于实现本文描述的功能的任何合适的信令机制。图6中示出的通信或其他操作中的一些在适当的情况下可以被重复、组合、修改或删除。另外,在不脱离特定实施例的范围的情况下,可以以任何合适的次序执行操作。
图7示出了根据某些实施例的用于代表远程计算节点102执行FPGA处理的示例性流程。在各种实施例中,操作中的一个或多个可以由请求实体(例如,核心110)、结构控制器122、FPGA 112和/或计算机系统100的其他逻辑来执行。尽管该流程假设请求实体位于与结构FPGA分离的计算节点上,但可以遵循类似的流程来处理来自位于相同计算节点上的请求实体的FPGA请求(这样的请求可以被发送到结构控制器,但不通过网络结构104)。
在702处,可用性查询在结构控制器122B处被接收。例如,可以经由网络结构104从远程计算节点接收查询。查询可以请求在计算节点的一个或多个FPGA上编程(或由特定结构控制器122管理)的内核列表。在替代实施例中,查询可以询问特定类型的内核是否在一个或多个FPGA上被编程。在704处,将具有对哪些内核被编程(或者特定内核是否被编程)的指示的响应发送到远程计算节点。在替代实施例中,查询可以查询向结构控制器注册的一个或多个内核,而不是由结构控制器管理的FPGA上编程的内核(例如,如果内核在初始注册之后被编程的话,例如在针对内核的运行请求被接收时)。
在706处,请求实体可以确定期望的内核当前是否在可由请求实体使用的FPGA处被编程。如果期望的内核当前未被编程,则请求实体可以在网络结构104上提交请求以使内核在FPGA上被编程。在708处,用于对内核进行编程的请求被接收(例如,由结构控制器122B)。在710处,确定资源是否可用于内核。例如,结构控制器122B可以确定由结构控制器管理的FPGA中的任何一个是否可以用内核来编程。如果FPGA不能够对另外的内核进行编程,则在716处做出关于是否驱逐当前在FPGA之一中被编程的内核的决定。可以使用任何合适的标准来确定是否应当驱逐内核。作为各种示例,如果在FPGA上编程的内核尚未被执行、当前正被执行、由特定请求实体(例如,与结构控制器122B在相同计算节点上的核心)请求、或者被大量使用(例如,使用内核在特定时间段期间已被运行了多少次的测量结果),则结构控制器可以确定不应当驱逐内核。如果做出了不应当驱逐内核的确定,则在718处将否定确认发送到请求实体,并且不对所请求的内核进行编程。如果做出了驱逐内核的确定,则选择内核并且然后在720处驱逐内核。可以以任何合适的方式确定要被驱逐的内核。在一个实施例中,结构控制器122B确定为远程计算节点预留的哪些内核已经被执行了至少一次并且当前没有正在相关FPGA中被执行。在该组中,结构控制器122B可以选择最远期执行的内核以进行驱逐。在其他实施例中,可以使用任何合适的标准来确定要驱逐哪个内核,所述标准例如内核已被运行的频率、哪个请求实体请求了内核、内核上次被运行的时间、内核何时被编程或注册、或其他合适的标准。
在712处(在720处内核被驱逐之后或者在710处进行了资源可用于内核的确定之后),内核在FPGA上被编程(或由结构控制器122B注册并且然后稍后被编程)。在714处,提供了对被编程的内核的指示。例如,关于内核被编程的确认以及用于运行内核的任何合适的信息(例如,与被编程的内核相关联的ID)被提供给请求实体。
在722处,用于运行内核的请求被接收(例如,在结构控制器122B处的网络结构上)。在724处,在其上对内核进行编程的FPGA被请求运行内核。结构控制器122B可以在发送到FPGA的请求中提供用于运行的输入参数,或者FPGA可以从存储器中检索输入参数。在726处,运行的输出在网络结构上被提供给请求实体。
图7中描述的流程仅仅代表可以在特定实施例中发生的操作或通信。在其他实施例中,可以执行另外的操作或在系统100的组件之间发送另外的通信。本公开内容的各种实施例预期了用于实现本文描述的功能的任何合适的信令机制。图7中示出的通信或其他操作中的一些在适当的情况下可以被重复、组合、修改或删除。另外,在不脱离特定实施例的范围的情况下,可以以任何合适的次序执行操作。
设计可以经历从创建到模拟到制造的各个阶段。表示设计的数据可以以多种方式来表示设计。首先,如在模拟中有用的,可以使用硬件描述语言或另一功能描述语言来表示硬件。另外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管栅极的电路级模型。此外,大多数设计在某个阶段达到表示硬件模型中各种设备的物理位置的数据级别。在其中使用传统半导体制造技术的情况下,表示硬件模型的数据可以是指定用于生产集成电路的掩模在不同掩模层上存在或不存在各种特征的数据。在一些实施方式中,可以以诸如图形数据系统II(GDS II)、开放艺术品系统交换标准(OASIS)或类似格式之类的数据库文件格式来存储这样的数据。
在一些实施方式中,基于软件的硬件模型以及HDL和其他功能描述语言对象可以包括寄存器传送语言(RTL)文件,以及其他示例。这样的对象可以是机器可解析的,以使得设计工具可以接受HDL对象(或模型)、解析HDL对象以获得所描述的硬件的属性,并且根据对象确定物理电路和/或片上布局。设计工具的输出可以用于制造物理设备。例如,设计工具可以确定来自HDL对象的各种硬件和/或固件元素的配置,例如总线宽度、寄存器(包括大小和类型)、存储器块、物理链路路径、结构拓扑以及为了实现在HDL对象中建模的系统而将被实现的其他属性。设计工具可以包括用于确定片上系统(SoC)和其他硬件设备的拓扑和结构配置的工具。在一些实例中,HDL对象可以用作开发可以由制造装备用于制造所描述的硬件的模型和设计文件的基础。实际上,HDL对象本身可以被提供作为制造系统软件的输入以产生所描述的硬件。
在设计的任何表示中,数据可以存储在任何形式的机器可读介质中。存储器或诸如盘(disc)之类的磁或光存储装置可以是机器可读介质,其用于存储经由调制或以其他方式生成以发送这样的信息的光波或电波发送的信息。当指示或携带代码或设计的电载波被发送时,在执行对电信号的复制、缓冲或重传的程度上,新的副本被制作。因此,通信提供者或网络提供者可以将体现本公开内容的实施例的技术的诸如被编码到载波中的信息之类的制品至少临时存储在有形的机器可读介质上。
如本文使用的模块指代硬件、软件和/或固件的任何组合。作为示例,模块包括与用于存储适于由微控制器执行的代码的非暂时性介质相关联的硬件,例如微控制器。因此,在一个实施例中,对模块的引用指代被特别配置为辨识和/或执行要被保存在非暂时性介质上的代码的硬件。此外,在另一实施例中,模块的使用指代包括特别适于由微控制器执行以实施预定操作的代码的非暂时性介质。并且,如可以推断的,在又一实施例中,术语模块(在该示例中)可以指代微控制器和非暂时性介质的组合。通常,被示出为单独的模块界限通常是变化的并且潜在地重叠。例如,第一模块和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,例如晶体管、寄存器或其他硬件,例如可编程逻辑器件。
逻辑可以用于实现各种组件的功能中的任何一个,所述组件例如网络结构104、处理器106、存储器设备108、核心110、FPGA 112、存储器控制器118、节点内通信控制器120、结构控制器122、结构接口控制器202、FPGA控制逻辑206、内核表208、FPGA控制器214、存储器控制器216、可配置逻辑302、操作逻辑304、节点内通信控制器306、结构接口控制器308、存储器控制器320或本文描述的其他实体。“逻辑”可以指用于执行一个或多个功能的硬件、固件、软件和/或每一项的组合。在各种实施例中,逻辑可以包括:可操作以执行软件指令的微处理器或其他处理元件、诸如专用集成电路(ASIC)之类的分立逻辑、诸如现场可编程门阵列(FPGA)之类的被编程的逻辑器件、包含指令的存储器设备、逻辑器件的组合(例如,如将在印刷电路板上找到的)、或其他合适的硬件和/或软件。逻辑可以包括一个或多个门或其他电路组件。在一些实施例中,逻辑还可以完全地体现为软件。软件可以体现为记录在非暂时性计算机可读存储介质上的软件包、代码、指令、指令集和/或数据。固件可以体现为被硬编码(例如,非易失性)在存储器设备中的代码、指令或指令集和/或数据。
在一个实施例中,短语“用于”或“被配置为”的使用指代布置、组合、制造、提供以售卖、进口和/或设计用于执行指定或确定的任务的装置、硬件、逻辑或元素。在该示例中,没有正在操作的装置或其元素仍“被配置为”执行指定的任务(如果其被设计、耦合和/或互连以执行所述指定任务的话)。作为纯粹说明性的示例,逻辑门可以在操作期间提供0或1。但是“被配置为”将使能信号提供给时钟的逻辑门不包括可以提供1或0的每个潜在的逻辑门。相反,逻辑门是以在操作期间1或0输出用于启用时钟的某种方式进行耦合的逻辑门。再次注意到,术语“被配置为”的使用不要求操作,而是侧重于装置、硬件和/或元素的潜在状态,其中,在潜在状态下,装置、硬件和/或元素被设计为当装置、硬件和/或元素正在操作时执行特定任务。
此外,在一个实施例中,短语“能够/能”和/或“可操作以”的使用指代以实现以指定的方式使用装置、逻辑、硬件和/或元素的方式来设计的某种装置、逻辑、硬件和/或元素。如以上指出的,在一个实施例中,用于、能够或可操作以的使用指代装置、逻辑、硬件和/或元素的潜在状态,其中,装置、逻辑、硬件和/或元素没有正在操作,而是被设计为实现以指定的方式使用装置。
如本文使用的,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑上的值的使用还被称为1和0,其简单地表示二进制逻辑状态。例如,1表示高逻辑电平,并且0表示低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元可以是能够保存单个逻辑值或多个逻辑值的。然而,已经使用了计算机系统中的其他值的表示。例如,十进制数十还可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的任何信息表示。
此外,状态可以由值或值的部分表示。作为示例,诸如逻辑一之类的第一值可以表示默认或初始状态,而诸如逻辑零之类的第二值可以表示非默认值。另外,在一个实施例中,术语复位和置位分别指代默认值或状态和更新的值或状态。例如,默认值潜在地包括高逻辑值,即复位,而更新的值潜在地包括低逻辑值,即置位。注意,值的任何组合可以用于表示任何数量的状态
以上阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的可由处理元件执行的指令或代码来实现。非暂时性机器可访问/可读介质包括提供(即,存储和/或发送)采用可由诸如计算机或电子系统之类的机器读取的形式的信息的任何机制。例如,非暂时性机器可访问介质包括随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪速存储器设备;电存储设备;光存储设备;声存储设备;其他形式的用于保存从暂时性(传播的)信号(例如,载波、红外信号、数字信号)中接收到的信息的存储设备;等等,其区别于可以从中接收信息的非暂时性介质。
用于对逻辑进行编程以执行本公开内容的实施例的指令可以存储在系统中的存储器内,所述存储器例如DRAM、高速缓存、闪速存储器或其他存储装置。此外,指令可以经由网络或通过其他计算机可读介质的方式来分布。因此,机器可读介质可以包括用于存储或发送采用可由机器(例如,计算机)读取的形式的信息的任何机制,但不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或用于经由电、光、声或其他形式的传播的信号(例如,载波、红外信号、数字信号等)在互联网上传输信息的有形的机器可读存储装置。因此,计算机可读介质包括适合于存储或发送采用可由机器(例如,计算机)读取的形式的电子指令或信息的任何类型的有形机器可读介质。
在至少一个实施例中,一种装置包括第一计算节点的结构控制器,结构控制器用于执行以下操作:从第二计算节点经由将第一计算节点耦合到第二计算节点的网络结构接收用于在第一计算节点的现场可编程门阵列(FPGA)上执行内核的请求;命令FPGA执行内核;以及经由网络结构将内核的执行的结果发送到第二计算节点。
在实施例中,结构控制器通过将消息从结构控制器发送到FPGA来命令FPGA执行内核,其中,消息不经过第一计算节点的处理核心。在实施例中,结构控制器还响应于来自第二计算节点的请求而发起将数据结构编程在FPGA上,数据结构包括用于配置FPGA的逻辑以使FPGA能够实现内核的信息。在实施例中,结构控制器响应于从第二计算节点接收到数据结构而发起对数据结构的编程。在实施例中,结构控制器响应于从第二计算节点接收到用于执行内核的请求而发起对数据结构的编程。在实施例中,数据结构是从结构控制器发送到FPGA的,而不经过第一计算节点的处理核心。在实施例中,结构控制器还用于指导FPGA将内核的执行的结果存储在第一计算节点的存储器中。在实施例中,结构控制器还用于存储多个内核条目,其中,内核条目标识在由结构控制器管理的FPGA上编程的内核。在实施例中,第一组内核条目是为第一计算节点预留的,并且第二组内核条目为一个或多个其他计算节点预留的,一个或多个其他计算节点包括第二计算节点。在实施例中,结构控制器还用于响应于用于对内核进行编程的请求而从FPGA中驱逐内核。在实施例中,被驱逐的内核是基于确定内核未正被使用来选择的。在实施例中,被驱逐的内核是基于对自上次执行内核以来经过的时间的确定来选择的。在实施例中,被驱逐的内核是基于确定内核已被执行至少一次来选择的。在实施例中,结构控制器用于响应于确定FPGA当前不正在执行内核而命令FPGA执行内核。
在实施例中,方法包括:在第一计算节点的结构控制器处经由将第一计算节点耦合到第二计算节点的网络结构从第二计算节点接收用于在第一计算节点的现场可编程门阵列(FPGA)上执行内核的请求;命令FPGA执行内核;以及经由网络结构将内核的执行的结果发送到第二计算节点。
在实施例中,命令FPGA执行内核包括将消息从结构控制器发送到FPGA,其中,消息不经过第一计算节点的处理核心。在实施例中,方法还包括响应于来自第二计算节点的请求而由结构控制器发起将数据结构编程在FPGA上,数据结构包括用于配置FPGA的逻辑以使FPGA能够实现内核的信息。在实施例中,结构控制器响应于从第二计算节点接收到数据结构而发起对数据结构的编程。在实施例中,结构控制器响应于从第二计算节点接收到用于执行内核的请求而发起对数据结构的编程。在实施例中,数据结构是从结构控制器发送到FPGA的,而不经过第一计算节点的处理核心。在实施例中,方法还包括指导FPGA将内核的执行的结果存储在第一计算节点的存储器中。在实施例中,方法还包括由结构控制器存储多个内核条目,其中,内核条目标识在由结构控制器管理的FPGA上编程的内核。在实施例中,第一组内核条目是为第一计算节点预留的,并且第二组内核条目是为一个或多个其他计算节点预留的,一个或多个其他计算节点包括第二计算节点。在实施例中,方法还包括响应于用于对内核进行编程的请求而从FPGA中驱逐内核。在实施例中,被驱逐的内核是基于确定内核未正被使用来选择的。在实施例中,被驱逐的内核是基于对自上次执行内核以来经过的时间的确定来选择的。
在至少一个实施例中,一种系统包括:第一计算节点,包括:处理器核心,其用于生成用于执行内核的请求;以及第一结构控制器,其用于从处理器核心接收用于执行内核的请求;以及第二计算节点。第二计算节点包括:现场可编程门阵列(FPGA);以及第二结构控制器。第二结构控制器用于:在将第二计算节点耦合到第一计算节点的网络结构上从第一结构控制器接收用于执行内核的请求;命令FPGA执行内核;以及经由网络结构将内核的执行的结果发送到第一计算节点。
在实施例中,命令FPGA执行内核包括将消息从第二结构控制器发送到FPGA,其中,消息不经过第二计算节点的处理核心。在实施例中,系统还包括以下各项中的一项或多项:通信地耦合到第一计算节点的电池;或者通信地耦合到第一计算节点的显示器。
在至少一个实施例中,一种装置包括:第一计算节点的现场可编程门阵列(FPGA),FPGA用于耦合到第一计算节点的结构控制器,结构控制器用于将第一计算节点耦合到第二计算节点。FPGA用于执行以下操作:响应于来自结构控制器的请求,对FPGA的可配置逻辑进行编程以实现在请求中指定的内核,其中,请求源自第二计算节点;以及响应于来自结构控制器的第二请求,代表第二计算节点执行内核并且将输出提供给结构控制器。
在实施例中,FPGA与结构控制器之间的通信不经过第一计算节点的处理核心。在实施例中,来自结构控制器的请求包括数据结构,其用于指定如何对FPGA的可配置逻辑进行编程以实现内核。在实施例中,FPGA还用于将消息发送到结构控制器,以指示FPGA可以同时实现的内核的数量。在实施例中,FPGA通过将输出存储在由结构控制器指定的存储器位置处来将输出提供给结构控制器。
在至少一个实施例中,一种装置包括:用于经由将第一计算节点耦合到第二计算节点的网络结构从第二计算节点接收用于在第一计算节点的现场可编程门阵列(FPGA)上执行内核的请求的单元;用于命令FPGA执行内核的单元;以及用于经由网络结构将内核的执行的结果发送到第二计算节点的单元。
在实施例中,命令FPGA执行内核包括将消息从结构控制器发送到FPGA,其中,消息不经过第一计算节点的处理核心。在实施例中,装置还包括用于响应于来自第二计算节点的请求而发起将数据结构编程在FPGA上的单元,数据结构包括用于配置FPGA的逻辑以使FPGA能够实现内核的信息。在实施例中,对数据结构的编程是响应于从第二计算节点接收到数据结构而发起的。在实施例中,对数据结构的编程是响应于从第二计算节点接收用于执行内核的请求而发起的。在实施例中,数据结构被发送到FPGA而不经过第一计算节点的处理核心。在实施例中,装置还包括用于指导FPGA将内核的执行的结果存储在第一计算节点的存储器中的单元。在实施例中,装置还包括用于存储多个内核条目的单元,其中,内核条目标识在由结构控制器管理的FPGA上编程的内核。在实施例中,第一组内核条目是为第一计算节点预留的,并且第二组内核条目是为一个或多个其他计算节点预留的,一个或多个其他计算节点包括第二计算节点。在实施例中,装置还包括用于响应于用于对内核进行编程的请求而从FPGA中驱逐内核的单元。在实施例中,被驱逐的内核是基于确定内核未正被使用来选择的。在实施例中,被驱逐的内核是基于对自上次执行内核以来经过的时间的确定来选择的。在实施例中,被驱逐的内核是基于确定内核已被执行至少一次来选择的。在实施例中,装置还包括用于响应于确定FPGA当前没有正在执行内核而命令FPGA执行内核的单元。
在至少一个实施例中,一种系统包括:用于在第一计算节点的结构控制器处经由将第一计算节点耦合到第二计算节点的网络结构从第二计算节点接收用于在第一计算节点的现场可编程门阵列(FPGA)上执行内核的请求的单元(例如,结构控制器122或其逻辑,例如结构接口控制器202或其他接收逻辑);用于命令FPGA执行内核的单元(例如,计算节点102的任何逻辑,例如结构控制器122或其逻辑,例如FPGA控制器214或其他逻辑);以及用于经由网络结构将内核的执行的结果发送到第二计算节点的单元(例如,计算节点102的任何逻辑,例如结构控制器或其逻辑,例如结构接口控制器202或其他合适的传输逻辑)。
在实施例中,命令FPGA执行内核包括将消息从结构控制器发送到FPGA,其中,消息不经过第一计算节点的处理核心。在实施例中,系统还包括用于响应于来自第二计算节点的请求而发起将数据结构编程在FPGA上的单元(例如,计算节点102的任何逻辑,例如结构控制器122或其逻辑,例如FPGA控制器214或其他逻辑),数据结构包括用于配置FPGA的逻辑以使FPGA能够实现内核的信息。在实施例中,系统还包括用于将消息发送到结构控制器以指示FPGA可以同时实现的内核的数量的单元(例如,计算节点102的任何逻辑,例如FPGA112或其逻辑,例如结构控制器接口308或其他逻辑)。在实施例中,系统还包括用于通过将输出存储在由结构控制器指定的存储器位置处来将输出提供给结构控制器的单元(例如,计算节点102的任何逻辑,例如FPGA 112或其逻辑,例如存储器控制器310或其他逻辑)。
贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合实施例描述的特定的特征、结构或特性被包括在本公开内容的至少一个实施例中。因此,贯穿本说明书在各处出现的短语“在一个实施例中”或“在实施例中”不一定都指代相同的实施例。此外,特定的特征、结构或特性可在一个或多个实施例中以任何适合的方式进行组合。
在前面的说明书中,已经参考特定的示例性实施例给出了详细描述。然而,将显而易见的是,可以对其进行各种修改和改变,而不脱离如所附权利要求中阐述的本公开内容的更宽的精神和范围。说明书和附图因此应被认为是说明性意义的而非限制性的意义的。此外,前面对实施例和其他示例性语言的使用不一定指代相同的实施例或相同的示例,而是可以指代不同和独特的实施例以及潜在相同的实施例。

Claims (23)

1.一种用于远程现场可编程门阵列处理的装置,所述装置包括:
第一计算节点的结构控制器,所述结构控制器用于执行以下操作:
经由将所述第一计算节点耦合到第二计算节点的网络结构从所述第二计算节点接收用于在所述第一计算节点的现场可编程门阵列(FPGA)上执行内核的请求;
命令所述FPGA执行所述内核;以及
经由所述网络结构将所述内核的所述执行的结果发送到所述第二计算节点,
其中,所述结构控制器还用于响应于用于对所述内核进行编程的请求而从所述FPGA中驱逐第二内核,并且
其中,被驱逐的所述第二内核是基于以下各项中的至少一项来选择的:确定所述第二内核未正被使用;对自上次执行所述第二内核以来经过的时间的确定;以及确定所述第二内核已被执行过至少一次。
2.如权利要求1所述的装置,其中,所述结构控制器用于通过将消息从所述结构控制器发送到所述FPGA来命令所述FPGA执行所述内核,其中,所述消息不经过所述第一计算节点的处理核心。
3.如权利要求1所述的装置,其中,所述结构控制器还用于响应于来自所述第二计算节点的请求而发起将数据结构编程在所述FPGA上,所述数据结构包括用于配置所述FPGA的逻辑以使所述FPGA能够实现所述内核的信息。
4.如权利要求3所述的装置,其中,所述结构控制器响应于从所述第二计算节点接收到所述数据结构而发起对所述数据结构的所述编程。
5.如权利要求3所述的装置,其中,所述结构控制器响应于从所述第二计算节点接收到用于执行所述内核的所述请求而发起对所述数据结构的所述编程。
6.如权利要求3所述的装置,其中,所述数据结构是从所述结构控制器发送到所述FPGA的,而不经过所述第一计算节点的处理核心。
7.如权利要求1所述的装置,其中,所述结构控制器还用于指导所述FPGA将所述内核的所述执行的所述结果存储在所述第一计算节点的存储器中。
8.如权利要求1所述的装置,其中,所述结构控制器还用于存储多个内核条目,其中,内核条目标识在由所述结构控制器管理的FPGA上编程的内核。
9.如权利要求8所述的装置,其中,第一组所述内核条目是为所述第一计算节点预留的,并且第二组所述内核条目是为一个或多个其他计算节点预留的,所述一个或多个其他计算节点包括所述第二计算节点。
10.如权利要求1所述的装置,其中,所述结构控制器用于响应于确定所述FPGA当前不正在执行所述内核而命令所述FPGA执行所述内核。
11.一种用于远程现场可编程门阵列处理的方法,所述方法包括:
在第一计算节点的结构控制器处经由将所述第一计算节点耦合到第二计算节点的网络结构从所述第二计算节点接收用于在所述第一计算节点的现场可编程门阵列(FPGA)上执行内核的请求;
命令所述FPGA执行所述内核;以及
经由所述网络结构将所述内核的所述执行的结果发送到所述第二计算节点,
其中,所述方法还包括:响应于用于对所述内核进行编程的请求而从所述FPGA中驱逐第二内核,并且
其中,被驱逐的所述第二内核是基于以下各项中的至少一项来选择的:确定所述第二内核未正被使用;对自上次执行所述第二内核以来经过的时间的确定;以及确定所述第二内核已被执行过至少一次。
12.如权利要求11所述的方法,其中,命令所述FPGA执行所述内核包括将消息从所述结构控制器发送到所述FPGA,其中,所述消息不经过所述第一计算节点的处理核心。
13.如权利要求11所述的方法,还包括响应于来自所述第二计算节点的请求而发起将数据结构编程在所述FPGA上,所述数据结构包括用于配置所述FPGA的逻辑以使所述FPGA能够实现所述内核的信息。
14.一种用于远程现场可编程门阵列处理的系统,所述系统包括:
第一计算节点,包括:
处理器核心,其用于生成用于执行内核的请求;以及
第一结构控制器,其用于从所述处理器核心接收用于执行所述内核的所述请求;以及
第二计算节点,包括:
现场可编程门阵列(FPGA);以及
第二结构控制器,其用于:
在将所述第二计算节点耦合到所述第一计算节点的网络结构上从所述第一结构控制器接收用于执行所述内核的所述请求;
命令所述FPGA执行所述内核;以及
经由所述网络结构将所述内核的所述执行的结果发送到所述第一计算节点,
其中,所述第二结构控制器还用于响应于用于对所述内核进行编程的请求而从所述FPGA中驱逐第二内核,并且
其中,被驱逐的所述第二内核是基于以下各项中的至少一项来选择的:确定所述第二内核未正被使用;对自上次执行所述第二内核以来经过的时间的确定;以及确定所述第二内核已被执行过至少一次。
15.如权利要求14所述的系统,其中,命令所述FPGA执行所述内核包括将消息从所述第二结构控制器发送到所述FPGA,其中,所述消息不经过所述第二计算节点的处理核心。
16.如权利要求14所述的系统,还包括以下各项中的一项或多项:
通信地耦合到所述第一计算节点的电池;或者
通信地耦合到所述第一计算节点的显示器。
17.一种用于远程现场可编程门阵列处理的装置,所述装置包括:
第一计算节点的现场可编程门阵列(FPGA),所述FPGA用于耦合到所述第一计算节点的结构控制器,所述结构控制器用于将所述第一计算节点耦合到第二计算节点,所述FPGA用于执行以下操作:
响应于来自所述结构控制器的请求,对所述FPGA的可配置逻辑进行编程以实现在所述请求中指定的内核,其中,所述请求源自所述第二计算节点;以及
响应于来自所述结构控制器的第二请求,代表所述第二计算节点执行所述内核并且将输出提供给所述结构控制器,
其中,所述结构控制器用于响应于用于对所述内核进行编程的请求而从所述FPGA中驱逐第二内核,并且
其中,被驱逐的所述第二内核是基于以下各项中的至少一项来选择的:确定所述第二内核未正被使用;对自上次执行所述第二内核以来经过的时间的确定;以及确定所述第二内核已被执行过至少一次。
18.如权利要求17所述的装置,其中,所述FPGA与所述结构控制器之间的通信不经过所述第一计算节点的处理核心。
19.如权利要求17所述的装置,其中,来自所述结构控制器的所述请求包括数据结构,其用于指定如何对所述FPGA的所述可配置逻辑进行编程以实现所述内核。
20.如权利要求17所述的装置,所述FPGA还用于将消息发送到所述结构控制器,以指示所述FPGA可以同时实现的内核的数量。
21.如权利要求17所述的装置,其中,所述FPGA通过将所述输出存储在由所述结构控制器指定的存储器位置处来将所述输出提供给所述结构控制器。
22.一种机器可读介质,其具有存储于其上的指令,所述指令当由机器执行时,使得所述机器执行如权利要求11至13中任一项所述的方法。
23.一种用于远程现场可编程门阵列处理的装置,包括用于执行如权利要求11至13中任一项所述的方法的单元。
CN201680086306.0A 2016-06-30 2016-06-30 用于远程现场可编程门阵列处理的方法和装置 Active CN109314103B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2016/040340 WO2018004590A1 (en) 2016-06-30 2016-06-30 Method and apparatus for remote field programmable gate array processing

Publications (2)

Publication Number Publication Date
CN109314103A CN109314103A (zh) 2019-02-05
CN109314103B true CN109314103B (zh) 2023-08-15

Family

ID=60786492

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680086306.0A Active CN109314103B (zh) 2016-06-30 2016-06-30 用于远程现场可编程门阵列处理的方法和装置

Country Status (4)

Country Link
US (2) US11029659B2 (zh)
EP (1) EP3479402B1 (zh)
CN (1) CN109314103B (zh)
WO (1) WO2018004590A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11119835B2 (en) * 2017-08-30 2021-09-14 Intel Corporation Technologies for providing efficient reprovisioning in an accelerator device
CN109766300A (zh) * 2018-12-07 2019-05-17 曙光信息产业股份有限公司 用于多节点服务器的互连板卡
DE102019127291A1 (de) * 2019-10-10 2021-04-15 Schaeffler Technologies AG & Co. KG Vorrichtung sowie Verfahren zum Konnektieren und zum Überwachen von Prozessen einer Produktionsmaschine
CN111176619A (zh) * 2019-12-24 2020-05-19 广东高云半导体科技股份有限公司 Fpga执行流程控制方法、装置、计算机设备及存储介质
CN112948022B (zh) * 2021-03-22 2021-11-16 弘大芯源(深圳)半导体有限公司 一种软性逻辑硬件的实现方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1125006A (zh) * 1993-05-28 1996-06-19 加州大学评议会 动态互连于一个动态逻辑内核的现场可编程逻辑设备
CN1987820A (zh) * 2005-12-19 2007-06-27 安捷伦科技有限公司 用于跟踪现场可编程门阵列中的程序执行的方法和系统

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430652B2 (en) 2003-03-28 2008-09-30 Tarari, Inc. Devices for performing multiple independent hardware acceleration operations and methods for performing same
US7584345B2 (en) * 2003-10-30 2009-09-01 International Business Machines Corporation System for using FPGA technology with a microprocessor for reconfigurable, instruction level hardware acceleration
JP2011524049A (ja) * 2008-06-04 2011-08-25 エヌイーシー ラボラトリーズ アメリカ インク 超並列アクセラレータを使用して学習機械の訓練と分類とを並列化し高速化するシステム及び方法
US8434087B2 (en) * 2008-08-29 2013-04-30 International Business Machines Corporation Distributed acceleration devices management for streams processing
US8131659B2 (en) * 2008-09-25 2012-03-06 Microsoft Corporation Field-programmable gate array based accelerator system
US7930519B2 (en) * 2008-12-17 2011-04-19 Advanced Micro Devices, Inc. Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit
US8364946B2 (en) * 2010-03-22 2013-01-29 Ishebabi Harold Reconfigurable computing system and method of developing application for deployment on the same
US10873613B2 (en) * 2010-12-09 2020-12-22 Xilinx, Inc. TCP processing for devices
EP2680155A1 (en) * 2012-05-02 2014-01-01 Agora Tech Developments Ltd. Hybrid computing system
US9100012B1 (en) * 2012-12-14 2015-08-04 Altera Corporation Adaptable programs using partial reconfiguration
CN103076849B (zh) * 2012-12-26 2014-07-02 无锡江南计算技术研究所 可重构微服务器系统
US10161993B2 (en) * 2013-02-21 2018-12-25 Advantest Corporation Tester with acceleration on memory and acceleration for automatic pattern generation within a FPGA block
US20140289445A1 (en) * 2013-03-22 2014-09-25 Antony Savich Hardware accelerator system and method
CN103345461B (zh) * 2013-04-27 2016-01-20 电子科技大学 基于fpga的带有加速器的多核处理器片上网络系统
NL2011315C2 (en) * 2013-08-19 2015-02-23 Topic Embedded Systems B V A computing platform, a reconfigurable hardware device and a method for simultaneously executing processes on dynamically reconfigurable hardware device, such as an fpga, as well as instruction set processors, such as a cpu, and a related computer readable medium.
US9294097B1 (en) * 2013-11-15 2016-03-22 Scientific Concepts International Corporation Device array topology configuration and source code partitioning for device arrays
KR20150084098A (ko) * 2014-01-13 2015-07-22 한국전자통신연구원 스트림 데이터 분산 처리 시스템 및 그 방법
CN103744356B (zh) * 2014-01-17 2016-08-17 重庆大学 一种基于dsp/fpga动态可配置的机床智能控制器及控制方法
US10218645B2 (en) * 2014-04-08 2019-02-26 Mellanox Technologies, Ltd. Low-latency processing in a network node
US9647667B1 (en) * 2014-04-30 2017-05-09 Altera Corporation Hybrid architecture for signal processing and signal processing accelerator
US9740464B2 (en) 2014-05-30 2017-08-22 Apple Inc. Unified intermediate representation
US11074227B2 (en) * 2014-07-01 2021-07-27 International Business Machines Corporation ID management for a network attached storage system
CN105306241B (zh) * 2014-07-11 2018-11-06 华为技术有限公司 一种业务部署方法及网络功能加速平台
US9785571B2 (en) 2014-10-07 2017-10-10 Google Inc. Methods and systems for memory de-duplication
CN107241913B (zh) * 2015-02-25 2020-06-19 株式会社日立制作所 信息处理装置
CN104732849A (zh) * 2015-04-07 2015-06-24 山东大学 基于动态部分可重构fpga的计算机系列课程实验平台装置
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
US11099918B2 (en) * 2015-05-11 2021-08-24 Xilinx, Inc. Accelerating algorithms and applications on FPGAs
EP3298740B1 (en) * 2015-05-22 2023-04-12 Gray Research LLC Directional two-dimensional router and interconnection network for field programmable gate arrays
US9847936B2 (en) * 2015-06-25 2017-12-19 Intel Corporation Apparatus and method for hardware-accelerated packet processing
US9819542B2 (en) * 2015-06-26 2017-11-14 Microsoft Technology Licensing, Llc Configuring acceleration components over a network
US10452971B2 (en) * 2015-06-29 2019-10-22 Microsoft Technology Licensing, Llc Deep neural network partitioning on servers
US10025722B2 (en) * 2015-10-28 2018-07-17 International Business Machines Corporation Efficient translation reloads for page faults with host accelerator directly accessing process address space without setting up DMA with driver and kernel by process inheriting hardware context from the host accelerator
JP6569508B2 (ja) * 2015-12-11 2019-09-04 富士通株式会社 処理装置及び処理装置の制御方法
WO2017199383A1 (ja) * 2016-05-19 2017-11-23 株式会社日立製作所 Pld管理方法及びpld管理システム
US10169065B1 (en) * 2016-06-29 2019-01-01 Altera Corporation Live migration of hardware accelerated applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1125006A (zh) * 1993-05-28 1996-06-19 加州大学评议会 动态互连于一个动态逻辑内核的现场可编程逻辑设备
CN1987820A (zh) * 2005-12-19 2007-06-27 安捷伦科技有限公司 用于跟踪现场可编程门阵列中的程序执行的方法和系统

Also Published As

Publication number Publication date
WO2018004590A1 (en) 2018-01-04
EP3479402B1 (en) 2021-10-27
US11675326B2 (en) 2023-06-13
US20210294292A1 (en) 2021-09-23
EP3479402A1 (en) 2019-05-08
US11029659B2 (en) 2021-06-08
EP3479402A4 (en) 2020-01-01
CN109314103A (zh) 2019-02-05
US20190155239A1 (en) 2019-05-23

Similar Documents

Publication Publication Date Title
US10389839B2 (en) Method and apparatus for generating data prefetches specifying various sizes to prefetch data from a remote computing node
US11403044B2 (en) Method and apparatus for performing multi-object transformations on a storage device
US11675326B2 (en) Method and apparatus for remote field programmable gate array processing
CN105718390B (zh) 共享存储器链路中的低功率进入
US9170948B2 (en) Cache coherency using die-stacked memory device with logic die
US10289313B2 (en) Method and apparatus for improving sequential reading in NAND flash
JP5348429B2 (ja) 持続性メモリのためのキャッシュコヒーレンスプロトコル
US20170344430A1 (en) Method and apparatus for data checkpointing and restoration in a storage device
CN113448504A (zh) 具有用于实现内部固态驱动器操作的外部软件执行的固态驱动器
US20140040532A1 (en) Stacked memory device with helper processor
US9727267B1 (en) Power management and monitoring for storage devices
US20190171392A1 (en) Method of operating storage device capable of reducing write latency
US20170040051A1 (en) Method and apparatus for completing pending write requests to volatile memory prior to transitioning to self-refresh mode
CN110659221A (zh) 主机管理的相干设备存储器
CN109643574B (zh) 用于在完成数据加载操作之前启动预读取操作的方法和设备
US10725933B2 (en) Method and apparatus for redirecting memory access commands sent to unusable memory partitions
US10276219B2 (en) System for improved power distribution to a memory card through remote sense feedback
US20220114115A1 (en) Interleaving of heterogeneous memory targets
TW201344435A (zh) 用於在階層式快取設計之快取記憶體間有效通訊的方法及設備
US20170255565A1 (en) Method and apparatus for providing a contiguously addressable memory region by remapping an address space
CN104115230A (zh) 高效pcms刷新机制背景
US20180101323A1 (en) Power management and monitoring for storage devices
CN113805791A (zh) 由存储设备向主机传送数据重定位信息以提高系统性能
KR20240124800A (ko) 스토리지 엘리먼트 포인터들을 사용하여 머신 러닝 연산을 수행하기 위한 방법들 및 장치들
US20240111459A1 (en) Storage command comprising time parameter

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