CN114521254A - 使用可编程集成电路的可动态重新配置的联网 - Google Patents
使用可编程集成电路的可动态重新配置的联网 Download PDFInfo
- Publication number
- CN114521254A CN114521254A CN202080049318.2A CN202080049318A CN114521254A CN 114521254 A CN114521254 A CN 114521254A CN 202080049318 A CN202080049318 A CN 202080049318A CN 114521254 A CN114521254 A CN 114521254A
- Authority
- CN
- China
- Prior art keywords
- circuitry
- user
- programmable
- platform
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic 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/17748—Structural details of configuration resources
- H03K19/17756—Structural details of configuration resources for partial configuration or partial reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/38—Universal adapter
- G06F2213/3808—Network interface controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Stored Programmes (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
集成电路(IC)可以包括至少部分地在可编程电路系统的静态区域(202)中实现的平台(218)和可编程电路系统的动态区域(204),其中该平台包括被耦合到主机接口(212)和网络接口(206)的网络接口卡控制器(NIC),并且可编程电路系统的动态区域(204)被配置为实现与平台通信的用户指定电路系统(216),其中用户指定电路系统实现一个或多个分组处理功能。NIC包括被连接到动态区域的多个通信接口。平台可以使用主机接口建立和维护与主机数据处理系统的第一通信链路和使用网络接口建立和维护与网络的第二通信链路。在可编程电路系统的动态区域的至少部分被动态地重新配置以在其中实现不同的用户指定电路系统的同时,平台可以继续在网络与主机数据处理系统之间传输数据。
Description
技术领域
本公开涉及集成电路(IC),并且更具体地,涉及使用可编程IC的可动态重新配置的联网。
背景技术
可编程集成电路(IC)是指一种包括可编程逻辑的设备。可编程IC的一个例子是现场可编程门阵列(FPGA)。FPGA的特点是包括可编程电路块。可编程电路块的示例包括但不限于输入/输出块(IOB)、可配置逻辑块(CLB)、专用随机存取存储器块(BRAM)、数字信号处理块(DSP)、处理器、时钟管理器、和延迟锁定回路(DLL)。
每个可编程分块通常包括可编程互连电路系统和可编程逻辑电路系统。可编程互连电路系统通常包括通过可编程互连点(PIP)互连的大量不同长度的互连线。可编程逻辑电路系统使用可编程元件来实现用户设计的逻辑,可编程元件可以包括例如函数生成器、寄存器、算术逻辑等等。
可编程互连和可编程逻辑电路系统通常通过将配置数据流加载到定义如何配置可编程元件的内部配置存储器单元来编程。配置数据可以从存储器(例如,从外部PROM)读取或由外部设备写入FPGA。各个存储单元的集体状态然后决定了FPGA的功能。
现代可编程IC已经演变为包括与一个或多个其他子系统组合的可编程逻辑。例如,一些可编程IC已经演变成片上系统或“SoC”,片上系统或“SoC”包括可编程逻辑和硬连线处理器。其他种类的可编程IC包括附加和/或不同的子系统。短语“可编程IC”是指包括可编程逻辑的至少部分并且部分或完全可编程的设备。
通常,可编程IC的功能性由为此目的而提供给设备的数据位控制。数据位可以被存储在易失性存储器中(例如,静态存储器单元,如在FPGA和一些其他可编程IC中,诸如复杂可编程逻辑器件(CPLD)),可以被存储在非易失性存储器中(例如,闪速存储器,如在一些CPLD中),或可以被存储在任何其他类型的存储器单元中。
发明内容
集成电路可以包括至少部分地在可编程电路系统的静态区域中实现的平台。该平台可以包括耦合到主机接口和网络接口的网络接口卡控制器。IC可以包括可编程电路系统的动态区域,该可编程电路系统的动态区域被配置为实现与平台通信的用户指定电路系统。用户指定电路系统能够实现一个或多个分组处理功能。网络接口卡控制器可以包括连接到动态区域的多个通信接口。该平台可以被配置为建立和维护使用主机接口与主机数据处理系统的第一通信链路以及使用网络接口与网络的第二通信链路。该平台可以被配置为:在可编程电路系统的动态区域的至少部分被动态地重新配置以在其中实现不同的用户指定电路系统的同时,继续在网络和主机数据处理系统之间传输数据。
提供本发明内容部分仅用于介绍某些概念,而不是标识所要求保护的主题的任何关键或基本特征。根据附图和以下详细描述,本发明布置的其他特征将是明显的。
附图说明
在附图中通过示例的方式示出了本发明的布置。然而,不应将附图解释为将本发明的布置仅限于所示的特定实施方式。通过阅读以下详细描述并参考附图,各个方面和优势将变得明显。
图1图示了主机数据处理系统和硬件加速卡的示例。
图2A图示了在可编程集成电路(IC)中实现的示例平台。
图2B图示了在可编程IC中实现的另一示例平台。
图3图示了在可编程IC中实现的另一示例平台。
图4图示了在可编程IC中实现的另一示例平台。
图5图示了在可编程IC中实现的另一示例平台。
图6图示了在可编程IC中实现的另一示例平台。
图7图示了在可编程IC中实现的另一示例平台。
图8图示了在可编程IC中实现的另一示例平台。
图9图示了平台内的网络接口卡(NIC)控制器的示例实现。
图10图示了在可编程IC中实现的另一示例平台。
图11图示了在可编程IC中实现的另一示例平台。
图12图示了在可编程IC中实现的另一示例平台。
图13图示了对实现如本文中所描述的智能NIC功能性的可编程IC进行操作的示例方法。
图14图示了在可编程IC上实现平台的示例方法。
图15图示了用于IC的示例架构。
具体实施方式
虽然本公开以定义新颖特征的权利要求结束,但相信通过结合附图考虑说明书将更好地理解本公开中所描述的各个特征。提供本文中所描述的(多个)过程、(多个)机器、(多个)制造及其任何变体是为了说明的目的。本公开中所描述的具体结构和功能细节不应被解释为限制,而仅被解释为权利要求的基础以及用于教导本领域技术人员以不同方式采用实际上任何适当详细结构中所描述的特征的代表性基础。此外,在本公开中所使用的术语和短语不旨在限制,而是提供对所描述的特征的可理解的描述。
本公开涉及集成电路(IC),并且更具体地,涉及使用可编程IC的可动态重新配置的联网。根据在本文中所描述的发明布置,可编程IC用于实现和部署可动态重新配置的网络附接加速功能。所描述的功能性可以在单个设备内被提供。例如,如本文中所描述的,在可编程IC中实现的平台能够在单个可编程IC内提供计算、存储和联网加速功能。该平台支持用户指定电路的实现和部署,以用于执行一项或多项网络附接加速功能。这些用户指定电路可以在不影响由可编程IC的平台处理的网络流量的情况下在飞行中被动态插入和/或从平台被移除。因此,在可编程IC的操作期间,平台可以通过随时间包含、移除和/或交换用户指定电路来在功能上扩展。
网络附接加速指的是通常在网络接口卡(NIC)上执行的处理,该网络接口卡经由通信总线插入到诸如服务器(例如,主机系统)的数据处理系统中。NIC可以包括连接到专用集成电路(ASIC)的现场可编程门阵列(FPGA)。ASIC通常通过网络端口接收数据并且执行基本的分组处理功能,同时FPGA用于对数据执行其他增强型网络加速功能(称为“智能NIC”功能)。ASIC然后可以将经处理的数据传送到主机系统。
根据本公开中所描述的本发明布置,单个设备(例如,单个可编程IC,诸如FPGA)可以用于提供ASIC功能性和增强型或智能NIC功能。本文中所描述的平台(如在可编程IC中所实现的)支持所描述的数据处理以及随着时间的推移实现不同自定义或用户指定电路的能力,而不影响可编程IC继续执行基本NIC功能的能力。因此,可编程IC的部分可以被动态地重新配置(例如,部分地重新配置)以执行与计算、存储和/或联网加速功能相关的分组处理操作,同时可编程IC上的其他区域能够继续不间断地运行,以便不丢失数据或与网络的通信链路。可编程IC还可以维护与主机系统的通信链路。如此,当一个或多个不同的用户指定电路在运行时被动态插入、移除和/或替换以用于处理网络数据的同时,可编程IC能够继续在网络和主机系统之间传递数据而不会丢失数据。
本发明的布置提供了一种平台,其中可以将附加功能性添加到由NIC控制器提供的基本NIC功能。附加功能性可以涉及联网、计算和/或存储加速。开发人员能够创建特定功能,而无需重新创建由平台提供的整个NIC基础设施。该平台的使用提供了各种益处。这些益处可以包括在开发用于在可编程IC中实现的硬件时减少编译时间,因为不需要针对开发的每个不同的用户指定电路重新实现平台。这些益处还可以包括减少用于将配置数据下载到可编程IC以在运行时实现用户指定电路系统的时间,因为每次添加、移除和/或修改不同的用户指定电路时,无需在可编程IC中重新实现平台。
下面参考附图更详细地描述本发明布置的其他方面和/或益处。为了说明的简单和清楚起见,附图中所示的元件不一定按比例绘制。例如,为了清楚起见,元件中的一些元件的尺寸可能相对于其他元件被夸大。此外,在认为合适的情况下,附图中的附图标记重复以指示对应的、类似的或相似的特征。
图1图示了主机数据处理系统(主机系统)100和硬件加速卡(卡)104的示例。主机系统100的组件可以包括但不限于一个或多个处理器106(例如,中央处理单元)、存储器108和总线110,该总线110将包括存储器108的各种系统组件耦合到(多个)处理器106。(多个)处理器106可以包括能够执行程序代码的多种处理器中的任一种处理器。示例处理器类型包括但不限于具有x86类型的架构(IA-32、IA-64等)、电源架构(Power Architecture)、ARM处理器等的处理器。
总线110表示若干类型的通信总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口以及使用多种可用总线架构中的任一种的处理器或本地总线。作为示例而非限制,此类架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线、外围组件互连(PCI)总线和PCI Express(PCIe)总线。
主机系统100通常包括多种计算机可读介质。这种介质可以是由主机系统100可访问的任何可用介质,并且可以包括易失性介质、非易失性介质、可移动介质和/或不可移动介质的任意组合。
存储器108可以包括易失性存储器形式的计算机可读介质,例如随机存取存储器(RAM)112和/或高速缓存存储器114。主机系统100还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。通过示例的方式,可以提供存储系统116以用于从不可移动的非易失性磁介质(未示出并且通常称为“硬盘驱动”)读取和向不可移动的非易失性磁介质写入。尽管未示出,用于从可移动的非易失性磁盘(例如“软盘”)读取和向可移动的非易失性磁盘写入的磁盘驱动、以及用于从可移动的非易失性光盘(诸如CD-ROM、DVD-ROM或其他光学介质)读取或向可移动的非易失性光盘写入的光盘驱动可以被提供。在这种情况下,每个可以通过一个或多个数据媒体接口连接到总线110。如下面将进一步描绘和描述的,存储器108可以包括至少一个计算机程序产品,该计算机程序产品具有被配置为执行在本公开中所描述的功能和/或操作的一组(例如,至少一个)程序模块(例如,程序代码)。
例如,程序/实用程序118(具有一组(至少一个)程序模块120,该一组(至少一个)程序模块120可以包括但不限于操作系统、一个或多个应用程序、其他程序模块和/或程序数据)被存储在存储器108中。程序模块120通常执行本文中所描述的至少关于主机系统100所执行的操作的功能和/或方法。例如,程序模块120可以包括一个或多个应用和驱动程序或用于与硬件加速卡104和/或可编程IC 132通信的后台程序。
程序/实用程序118可由(多个)处理器106执行。程序/实用程序118和由(多个)处理器106使用、生成和/或操作的任何数据项是在被(多个)处理器106采用时赋予功能性的功能数据结构。如本公开中所定义的,“数据结构”是物理存储器内数据模型的数据组织的物理实现。如此,数据结构由存储器中的特定电或磁结构元素形成。数据结构对由使用处理器执行的应用程序所使用的被存储在存储器中的数据强加物理组织。
主机系统100可以包括通信地链接到总线110的一个或多个输入/输出(I/O)接口128。(多个)I/O接口128允许主机系统100与外部设备通信,允许主机系统100耦合到外部设备(允许(多个)用户与主机系统100交互),允许主机系统100耦合到允许主机系统100与其他计算设备通信的外部设备,等等。例如,主机系统100可以通过(多个)I/O接口128通信链接到硬件加速卡104。主机系统100可以经由(多个)I/O接口128耦合到其他外部设备(诸如键盘和/或显示)(未示出)。I/O接口128的示例可以包括但不限于网卡、调制解调器、网络适配器、硬件控制器等。
在示例实现中,主机系统100通过其与硬件加速卡104通信的I/O接口128是PCIe适配器。硬件加速卡104可以被实现作为耦合到主机系统100的电路板。硬件加速卡104可以例如被插入到主机系统100的卡槽中,例如,可用的总线和/或PCIe槽。
硬件加速卡104包括可编程IC 132。硬件加速卡104还包括耦合到可编程IC 132的易失性存储器134和也耦合到可编程IC 132的非易失性存储器136。易失性存储器134可以被实现作为RAM并且被认为是可编程IC 132的“本地存储器”,而在主机系统100内的存储器108不被认为是可编程IC 132本地的。例如,存储器108对于主机系统100是本地的。在一些实现中,易失性存储器134可以包括多个吉字节的RAM,例如64GB的RAM。非易失性存储器136可以被实现作为闪速存储器。非易失性存储器136被认为是可编程IC 132本地的。
在图1的示例中,可编程IC 132连接到网络138。在一个示例中,网络138是以太网类型的网络。网络138可以以多种不同速度中的任一运行。例如,网络138可以是10G、25G、50G、100G、200G、400G或其他速度网络。在特定实现中,网络138可以是、包括或耦合到5G网络。可编程IC 132包括以太网接口(未示出),以太网接口用于将可编程IC 132连接(例如通信链接)到网络138。例如,可编程IC 132可以经由网络138连接到以太网交换机或一个或多个其他联网设备。出于说明的目的,术语“网络”在本文中是指网络138,例如以太网网络。
图1并非旨在暗示如对本文中所描述的示例的使用范围或功能性的任何限制。主机系统100是能够执行本公开中所描述的与硬件加速卡104和/或可编程IC 132相关的各种操作的计算机硬件(例如,系统)的示例。
主机系统100仅是可以与硬件加速卡一起使用的计算机的一个示例实现。主机系统100以计算设备(例如计算机或服务器)的形式示出。主机系统100可以在集群中或分布式云计算环境中被实践作为独立设备、裸金属服务器。在分布式云计算环境中,任务由通过通信网络而链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于本地和远程计算机系统存储介质(包括存储器存储设备)中。
如本文中所使用的,术语“云计算”是指促进对可配置计算资源(诸如网络、服务器、存储、应用、IC(例如,可编程IC)和/或服务)的共享池的方便的按需网络接入的计算模型。这些计算资源可以利用最少的管理工作或服务提供商交互来快速供应和释放。云计算促进可用性,其特点可以是按需自助服务、广泛的网络接入、资源池、快速弹性和经测量的服务。
一些计算环境(例如使用主机系统100或其他合适的数据处理系统的云计算环境和/或边缘计算环境)通常支持FPGA即服务(FPGA-as-a-Service,FaaS)模型,其中用户功能被硬件加速为用户指定或自定义电路设计,并且在主机计算机系统控制下运行的可编程IC内实现。国家标准与技术研究院(NIST)(更特别地,NIST的信息技术实验室)描述了云计算模型的其他示例。
主机系统100能够与许多其他通用或专用计算系统环境或配置一起操作。可以适合与主机系统100一起使用的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费者电子产品、网络PC、小型计算机系统、大型计算机系统和包括任何上述系统或设备的分布式云计算环境等。
图2A图示了在图1的可编程IC 132中实现的示例平台218。可编程IC 132包括可编程电路系统的静态区域202和可编程电路系统的动态区域204。虽然静态区域202和动态区域204均使用可编程电路系统来实现,但是应当理解,一个或两个区域可以包括如本文中结合其余附图更详细地描述的一个或多个硬连线电路块。
静态区域202表示可编程IC 132的可编程电路系统的区域,该区域一旦利用电路设计进行配置就不会随时间改变。虽然可以重新配置静态区域202,但是这样的操作将使可编程IC 132离线(例如,从主机系统100和/或网络138离线)。出于说明的目的,静态区域202利用阴影来示出并且用于实现提供联网操作的平台218。平台218由被加载到可编程IC 132中(例如作为配置比特流)的电路设计指定。在图2A的示例中,平台218包括在阴影区域中包括的各种电路块。平台218一旦在可编程IC 132中实现,就在操作期间提供功能联网、主机系统接口和可选的存储器接口。平台218能够将网络数据从以太网接口传递到主机系统100(例如,经由具有基本网络接口控制器(NIC)功能性的通信总线到处理器106)。
动态区域204表示可编程IC 132的可编程电路系统的区域,该区域可以随时间被动态地重新配置以在其中实现不同的用户指定(例如,自定义)电路。在动态区域204中实现的用户指定电路被设计为连接到在静态区域202中的平台218中实现的(多个)电路块。通常,在动态区域204中实现的用户指定电路用于扩展平台218的功能性和/或可操作性。
在静态区域202内,电路设计已被加载以创建平台218。例如,指定平台21 8的全部或部分配置比特流被加载到可编程IC 132中。在图2A的示例中,平台218包括以太网接口206、NIC控制器208、直接存储器存取(DMA)电路210和外围组件互连快速(PCIe)控制器212。因此,以太网接口206、NIC控制器208、DMA电路210和PCIe控制器212在静态区域202中实现。以太网接口206连接到NIC控制器208。NIC控制器208连接到DMA电路210。DMA电路210连接到PCIe控制器212。以太网接口206能够建立到网络138(例如,其中的节点或交换机)的通信链路。PCIe控制器212能够建立到主机系统100的通信链路。
在其他示例中,平台218可以使用其他类型的接口来连接到网络138。此外,平台218可以使用其他类型的接口来连接到主机系统100。在本公开中所描述的特定示例被提供用于说明而非限制的目的。可以使用其他备选类型的接口。
在图2A的示例中,以太网接口206、NIC控制器208、DMA电路210和PCIe控制器212中的每者使用可编程电路系统来实现。在一个或多个其他示例实现中,以太网接口206、DMA电路210和/或PCIe控制器212中的一个或多个或全部(例如,任何组合)被实现作为硬连线电路块。
NIC控制器208利用连接到动态区域204的一个或多个通信接口214来实现。在特定实现中,通信接口214和/或在NIC控制器208和动态区域204之间的其他通信接口可以被实现作为流接口。流接口的一个示例是符合4AXI4-Stream协议(例如,“AXI”)的接口。应当理解,可以使用其他类型的流接口来将NIC控制器208连接到动态区域204,并且AXI仅作为非限制性示例来提供。流接口的另一示例可以是片上网络。
在一方面,通信接口214是软件可控的。例如,用于实现用户指定电路系统的配置比特流可以与相关联的元数据一起被存储。元数据可以指定通信接口214的状态,例如是开启还是关闭。在多个这样的接口的情况下,元数据可以指定哪些通信接口214被启用并且将被使用。在这方面,元数据描述了平台218与动态区域204和/或用户指定的电路216之间的连接性。
作为示例,通信接口214可以使用一个或多个多路复用器来实现,该多路复用器可以从控制接口被提供控制信号(例如,选择信号)。选择信号可以由元数据指定。一旦配置比特流被加载到可编程IC 132中以实现用户指定电路系统216,主机系统100就能够获得与配置比特流相对应的元数据并且将元数据写入可编程IC 132。元数据可以被提供给控制接口,该控制接口生成适当的选择信号到通信接口214的多路复用器以根据需要激活和/或停用通信接口214来与用户指定电路系统216通信。
经由通信接口214,数据可以从平台218移动到动态区域202中,进入动态区域202中的用户指定电路系统216并由其处理,并且返回到平台218。NIC控制器208可以具有多个通信接口,该多个通信接口可以是如所描述的软件可控的。例如,在入口方面,NIC控制器208可以经由以太网接口206从网络138接收数据。在通过通信接口214将数据提供给用户指定电路系统216之前,NIC控制器208可以或可以不对数据进行操作。用户指定电路系统216可以对接收到的数据进行操作并且经由通信接口214将经处理的数据提供回到NIC控制器208。例如,用户指定电路系统216可以执行一个或多个分组处理或智能NIC功能。NIC控制器208可以或可以不对数据执行进一步处理,并且经由DMA电路210和PCIe控制器212将数据提供给主机系统100。在另一示例中,NIC控制器208可以被配置为:在由NIC控制器208和/或用户指定电路系统216执行处理之后或在没有任何此类处理的情况下,将从以太网接口206接收的数据路由回至到网络138的以太网接口206。
在出口方面,NIC控制器208可以经由PCIe控制器212和DMA电路210从主机系统100接收数据。在通过通信接口214将数据提供给用户指定电路系统216之前,NIC控制器208可以或可以不对数据进行操作。用户指定电路系统216可以对接收到的数据进行操作,并且经由通信接口214将经处理的数据提供回至NIC控制器208。NIC控制器208在经由以太网接口206将数据提供给网络138之前可以或可以不对数据执行进一步处理。在另一示例中,NIC控制器208可以被配置为:在由NIC控制器208和/或用户指定电路系统216执行的处理之后或者在没有任何这样的处理的情况下,将从主机系统100接收的数据路由回至主机系统100。
动态区域204被实现为包括一个或多个部分重新配置(PR)区域。可编程IC 132的PR区域是指被保留用于随时间动态地实现一个或多个不同的用户指定(例如,自定义)电路设计的可编程电路系统的区域。动态区域204可以包括多于一个的PR区域。一般而言,在动态区域204中实现的每个不同的PR区域是可独立重新配置的。在图2A的示例中,动态区域204实现单个PR区域。
在图2A的示例中,静态区域202是指可编程IC 132中位于动态区域204外部的部分。如在静态区域202中实现的平台218不改变,例如保持静态,同时动态区域204中的电路系统可以被改变以随着时间的推移实现其他不同的用户指定电路设计。在图2A的示例中,用户指定电路设计在动态区域204中实现并且被示为用户指定电路系统216。动态区域204可以随着时间的推移被重新配置以实现不同的用户指定电路系统(例如,除用户指定电路系统216之外的电路),同时静态区域202中的平台218继续不间断地运行。
例如,用户指定电路系统216能够执行多种网络加速功能中的任一。在这方面,平台218和例如NIC控制器208(尽管本身是静态的)的功能性可以通过添加用户指定电路系统216来增强。在一个方面,用户指定电路系统216能够执行多种增量式网络加速功能中的任一,因为NIC控制器208能够传递元数据,使得用户指定电路系统216无需重复已经执行的操作(例如由NIC控制器208执行的操作)。
用户指定电路系统216可以根据在可编程IC 132的操作期间流过在网络138和主机系统100之间的静态区域202中的平台218的数据(例如,来自网络138的数据(称为“网络”或“入口”数据)和/或来自主机系统100的数据(称为“主机”或“出口”数据))(在不中断或丢失此类数据的情况下)来动态插入、移除和/或替换。在另一方面,在主机系统100中执行的虚拟机的情况下,可以相对于虚拟机使用术语“出口”和“入口”。例如,在主机系统100中执行的虚拟机的出口数据可以被定向到网络138或也在主机系统100中执行的另一虚拟机的入口。在任何情况下,平台218能够维护经由以太网接口206与网络138的通信链路以及经由PCIe控制器212与主机系统100的通信链路,同时动态地重新配置动态区域204。因此,在动态区域204被重新配置的同时,可编程IC 132对于主机系统100和经由网络138连接到可编程IC 132的其他设备来说似乎是“在线的”或可操作的。
尽管在图2的示例中,NIC控制器208被示为包括一个通信接口214。NIC控制器208可以包括多个不同的通信接口。通信接口可以被包括在其中包括的一个或多个不同阶段下的NIC控制器208中。这允许NIC控制器208在其中的多种不同处理阶段中的任何阶段下与用户指定电路系统216交换数据。
图2B图示了在图1的可编程IC 132中实现的平台218的另一示例。图2B的平台218基本上类似于图2A的示例。然而,在图2B的示例中,平台218在静态区域202中部分实现。例如,PCIe控制器212在静态区域202中实现。以太网接口206、NIC控制器208和DMA电路210各自在不同的PR区域(例如,分别是PR区域220、222和224)。在图2B的示例中,动态区域204可以被实现作为与PR区域220、222和224分开且独立的另一PR区域。
图2B的示例允许平台218的不同组件随时间进行更新。实际上,平台218是可配置的。静态区域202中的电路系统的更新通常需要重新编译用户电路系统。图2B的实现使在静态区域202中实现的平台218的部分最小化。通过使在静态区域202中实现的平台218的量最小化,必须重新编译用户指定电路系统的可能性降低。例如,可以改变DMA电路210、NIC控制器208和以太网接口206(可以利用这些组件的不同实现来重新配置PR区域),而不需要对用户指定电路系统216的重新编译。PCIe控制器212的改变将需要对用户指定电路系统216的重新编译。重新编译用户电路系统(例如,用户指定电路系统216)是不期望的并且在FaaS应用中可能是特别不期望的耗时努力。在图2B的示例中,平台218的大部分可以随时间进行更新,而无需对用户指定电路系统的重新编译。这降低了必须对静态区域202中的电路系统进行更新的可能性,并且如此降低了需要重新编译用户电路设计的可能性。
图2B是为了说明的目的而提供的。其他示例实现可以使用不同数目的PR区域来实现平台218。例如,平台218可以在静态区域202中实现PCIe控制器212并且在单个PR区域中实现以太网接口206、NIC控制器208和DMA电路210。在另一示例中,可以使用两个PR区域,其中以太网接口206、NIC控制器208和DMA电路210中的任意两者在第一PR区域中实现,而另一组件在第二PR区域中实现。应当理解,虽然在其余图中所示的各种示例平台218中没有具体说明,但在结合图2B所描述的呈现示例中的每个示例中可以使用一个或多个PR区域来实现平台218。
图3图示了在可编程IC 132中实现的平台218的另一示例。在图3的示例中,更详细地示出了以太网接口206。以太网接口206包括连接到媒体访问控制(MAC)304的物理层(PHY)302。PHY 302连接到网络138。MAC 304连接到NIC控制器208。例如,MAC 304可以连接到在NIC控制器208中包括的以太网接口(未示出)。
图4图示了在可编程IC 132中实现的平台218的另一示例。在图4的示例中,一个或多个存储器控制器402在静态区域202中作为平台218的部分来实现。(多个)存储器控制器402连接到易失性存储器(例如,RAM)134。存储器控制器402可以使用可编程电路系统来实现。然而,在另一示例中,一个或多个存储器控制器402可以被实现为硬连线电路块。
存储器控制器402可以连接到在动态区域204中实现的用户指定电路系统216。此外,(多个)存储器控制器402可以耦合到DMA电路210。如此,用户指定电路系统216能够在操作期间访问易失性存储器134。此外,主机系统100能够经由(多个)存储器控制器402读取和/或写入易失性存储器134。这允许主机系统100与用户指定电路系统216共享数据。
在本公开中,无论是否示出有存储器控制器,所示出的各种示例平台均可以被实现为包括一个或多个存储器控制器。可以可选地包括存储器控制器。此外,在使用一个或多个PR区域来实现平台218的实现中,存储器控制器可以在它们自己的PR区域中实现或被包括在具有平台218的一个或多个其他组件的另一PR区域中。
图5图示了在可编程IC 132中实现的平台218的另一示例。在图5的示例中,平台218包括在NIC控制器208中实现的软件定义网络(SDN)数据平面502。SDN数据平面502能够通过将数据平面实现为平台218的部分来对数据和控制平面进行解耦。在该示例中,不是在主机系统100中执行的软件中实现数据平面,而是数据平面软件是硬件加速的并且作为NIC控制器208内的SDN数据平面502来实现。
在一些示例实现中,SDN数据平面502可以使用用户指定电路系统504(和/或动态区域204中经由通信接口506连接到SDN数据平面502的其他用户指定电路系统)来自定义。例如,利用将SDN数据平面502与动态区域204连接的端口,用户指定电路系统504可以被配置为向数据添加自定义GRE报头和/或实现自定义解析器。例如,利用自定义解析器,元数据可以与新解析器数据一起被传递并且与新解析器数据相关联。此外,可以通过用户指定电路系统504利用(多个)网络覆盖来修改GRE。在任何情况下,一个或多个通信接口506的可用性允许SDN数据平面502使用动态区域204中的可编程电路系统来自定义。
SDN数据平面502实现了程序化访问以使网络管理更加灵活。例如,就NIC控制器208和/或SDN数据平面502利用在查找接口上搜索的大流程表(large flow table)而言,自定义的流程表可以被实现为动态区域204内的用户指定电路系统216和/或504。SDN数据平面502减轻了以其他方式将置于主机系统100上以执行数据平面软件的处理负担。
在图5的示例中,SDN数据平面502可以经由通信接口506连接到动态区域204。SDN数据平面502可以具有连接到动态区域204的多于一个的通信接口。在其他示例中,SDN数据平面502可以不包括到动态区域204的通信接口。虽然示出了(多个)存储器控制器402,但是(多个)存储器控制器402是可选的并且可以被省略。存储器控制器402在被包括时允许用户指定电路系统504和214读取和写入易失性存储器134。此外,(多个)存储器控制器402允许主机系统100从易失性存储器134读取和向易失性存储器134写入。
出于说明的目的,动态区域204包括附加的用户指定电路系统504。在一个示例中,用户指定电路系统504经由通信接口506连接到NIC控制器208和/或SDN数据平面502。用户指定电路系统504可以实现允许NIC控制器208实现数据流转向的自定义流程表。
在另一示例中,用户指定电路系统216可以实现视频解码器和缩放电路。用户指定电路系统504可以实现机器学习对象检测电路。利用这种配置,动态区域204能够执行实时视频处理和机器学习。该示例说明了可以如何使用平台218来实现网络附接实时视频解码(随后是对象检测和/或分类)。
例如,视频解码器和缩放电路能够对经由网络138接收的多个不同的视频流进行操作。视频流可以源自通信链接到网络138的安全系统和/或摄像机。视频解码器和缩放电路能够对接收到的视频流进行解码。视频解码器和缩放电路能够从不同的视频流中提取一个或多个单独的帧,并且对提取的帧进行缩放以供机器学习对象检测电路使用。
在图5的示例中,NIC控制器208能够执行基本的NIC功能。用于对象检测和/或图像分类功能的视频解码和缩放功能以及机器学习推理被实现为动态区域204内的硬件加速内核。通过将功能实现为动态区域204中的内核,内核能够实时对视频流进行操作。实时操作减小了时延,因为可以在视频流不经过主机系统100的网络堆栈的情况下执行处理(例如,用户指定电路系统504和216在数据到达主机系统100之前对视频进行操作)。这加速了由可编程IC 132执行的处理。另外,平台218降低了存储需求,因为可以丢弃没有任何标记对象的图像,而可以保存具有标记对象的图像(例如,帧)以用于进一步分析。此外,由于(多个)处理器106的周期可以用于其他操作,因此显著地降低了置于主机系统100上的工作负载。
在另一示例中,图5的平台218可以用于对加密数据流量执行内联恶意软件检测。在该示例中,平台218能够基于从数据流中提取某些信息来操作。该信息可以包括数据流的时长、客户端发送的分组数目、服务器发送的分组数目、客户端发送的字节数目和服务器发送的字节数目。例如,用户指定电路系统216可以实现分类和特征提取电路。提取的信息可以与来自也由用户指定电路系统216提取的分组报头的未加密部分的元数据一起使用,以训练由用户指定电路系统504实现的随机森林分类器。然后可以使用经训练的分类器来检测恶意软件。
在一方面,分类器可以对从网络138进入可编程IC 132的分组实时运行。用户指定电路系统216能够提取特征并且将分组分类为数据流。用户指定电路系统216能够将所确定的信息馈送给用户指定电路系统504。用户指定电路系统504可以被预先加载有用于感兴趣的恶意软件的训练模型。响应于用户指定电路系统504检测到恶意软件,用户指定电路系统504能够发送消息以在SDN数据平面502内设置过滤器,以防止从攻击者发送的任何进一步的网络数据到达主机系统100。在该示例中,NIC控制器208和SDN数据平面502作为平台218的部分来运行,而用于恶意软件检测的特征提取功能和分类作为被加载到动态区域204中的内核来运行。
通过实时执行分类、提取和恶意软件检测,可以在恶意软件物理地越过从可编程IC 132到主机系统100的PCle总线之前阻止恶意软件。这为主机系统100提供了更强健的保护。随机森林分类技术允许在加密流量上检测恶意软件,而无需复杂的解密和代理技术。另外,在可编程IC 132上而不是在设备上执行该功能通过工作负载分布提供更好的缩放,并且防止来自数据中心内部的攻击。
本文中所描述的特定用户指定电路是出于说明而非限制的目的而提供的。示例说明了可以在动态区域204中实现任何用户指定电路系统以扩展平台218的能力。此外,虽然可以包括不同的用户指定电路系统块以与NIC控制器208通信,但不同的用户指定电路系统块可以或可以不相互通信。
在图5的示例中,动态区域204被实现为单个PR区域。在一个或多个其他示例中,每个用户指定电路块(例如,504和216)可以在其自己的可独立重新配置的PR区域中实现。在这样的配置中,在每个PR区域中实现的特定用户指定电路系统将是可动态修改的(例如,可重新配置的),而无需修改在动态区域204中实现的其他用户指定电路系统。例如,如果用户指定电路系统504在第一PR区域并且用户指定电路系统216在第二PR区域中,用户指定电路系统504可以被移除并且不同的用户指定电路系统可以被添加到第一PR区域,而不影响用户指定电路系统216的操作。类似地,用户指定电路系统216可以被移除并且不同的用户指定电路系统可以被添加到第二PR区域,而不影响用户指定电路系统504的操作。在每种情况下,平台218继续不间断地操作。图5的平台218也可以使用如本文中所描述的一个或多个PR区域来实现。
图6图示了在可编程IC 132中实现的平台218的另一示例。图6的示例基本上类似于图5的示例。然而,在图6的示例中,SDN数据平面502利用开放虚拟交换机(Open VirtualSwitch)或开放vSwitch(OVS)数据平面602来替换。OVS数据平面602能够连接到虚拟化服务器。OVS数据平面602实现虚拟交换机的硬件加速版本。虚拟交换机软件不是在主机系统100中执行的软件中实现虚拟交换机,而是硬件加速并且被实现为平台218内的OVS数据平面602。OVS数据平面602减轻了将以其他方式置于主机系统100上的处理负担。在图6的示例中,OVS数据平面602和/或流程表可以使用用户指定电路系统504和/或用户指定电路系统216(例如,使用在动态区域204中实现并且经由一个或多个通信接口连接到OVS数据平面602和/或NIC控制器208的用户指定电路系统)来自定义。
在图6的示例中,OVS数据平面602能够经由通信接口604连接到动态区域204。OVS数据平面602可以具有连接到动态区域204的多于一个的通信接口。在另一示例中,OVS数据平面602可以不具有到动态区域204的通信接口。虽然示出了(多个)存储器控制器402,但是(多个)存储器控制器402是可选的。存储器控制器402在被包括时允许用户指定电路系统504和214读取和写入易失性存储器134。此外,(多个)存储器控制器402允许主机系统100读取和写入易失性存储器134。
出于说明的目的,动态区域204包括附加的用户指定电路系统504。用户指定电路系统504可以经由接口604连接到NIC控制器208和/或OVS数据平面602。在一个示例中,用户指定电路系统216可以实现能够执行存储压缩、加密和/或去重操作中的一个或多个的电路。
在图6的示例中,平台218可以用于实现用于联网和存储的融合智能NIC。平台218能够执行网络和存储两者卸载和加速。平台218提供了具有OVS数据平面602的NIC控制器208、以太网接口206、PCIe控制器212和(多个)存储器控制器402。在动态区域204中实现的用户指定电路系统216和504能够执行诸如压缩和/或加密的操作。如所讨论的,可以使用例如流接口来实现平台218与用户指定电路系统216和504之间的数据流。
控制平面和慢路径处理可以在主机系统100中执行。然而,在另一示例实现中,可编程IC 132中的嵌入式硬连线处理器和/或软处理器(参见例如图7)或不同于主机系统100中的处理器的经外部连接的处理器(参见例如图8)能够执行存储卸载。涉及嵌入式处理器或外部处理器的后者模型可以用于“裸金属”实现,其中嵌入式或外部处理器管理网络功能、存储等,与执行此类(多个)功能的主机系统处理器相反。
在本文中所描述的特定用户指定电路是出于说明而非限制的目的来提供的。示例说明了可以在动态区域204中实现任何用户指定电路系统以扩展平台218的能力。此外,所说明的用户指定电路块可以被包括在相同PR区域或不同PR区域中,取决于实施方式。类似地,图6的平台218可以使用如本文中所描述的一个或多个PR区域来实现。
图7图示了在可编程IC 132中实现的平台218的另一示例。在图7的示例中,静态区域202被实现为包括处理器702。处理器702是可编程IC 132内的嵌入式处理器。在一方面,处理器702是使用可编程IC 132的可编程电路系统来实现的软处理器。在示例实现中,软处理器702被实现为能够从加利福尼亚州圣何塞的Xilinx公司获得的MicroBlazeTM处理器。此外,处理器702可以被实现为能够执行程序代码的多种软处理器中的任何一种。在另一示例中,处理器702是硬连线处理器。例如,处理器702可以被实现为ARM类型的处理器或x86类型的处理器。
如图所示,处理器702连接到片上互连704。在一个示例中,片上互连704被实现为存储器映射接口。存储器映射接口的一个示例是存储器映射AXI接口。AXI被提供作为接口的说明性示例并且不旨在作为在本公开中所描述的本发明布置的限制。片上互连的其他示例包括但不限于其他类型的总线、片上网络、交叉开关(cross-bar)或其他类型的开关。
处理器702能够执行多种不同功能中的任一种。可以由处理器702执行的功能的示例包括但不限于OVS控制平面、存储、管理等。在图7的示例中,平台218能够经由所示的本地接口(例如,通过NIC控制器208、DMA电路210和存储器映射接口704)将网络数据从以太网接口206传递给嵌入式处理器702。
在图7的示例中,平台218中不包括(多个)存储器控制器。在一个或多个其他示例中,(多个)存储器控制器可以被包括在平台218中。(多个)存储器控制器可以连接到处理器702、动态区域204中的用户指定电路系统216和/或504、和/或到主机系统100。如所讨论的,平台218可以使用一个或多个PR区域来实现。
图8图示了在可编程IC 132中实现的平台218的另一示例。在图8的示例中,平台218被实现为包括附加的(例如,第二)PCIe控制器802。PCIe控制器802使用可编程电路系统来实现。PCIe控制器802连接到外部处理器804。外部处理器804能够执行程序代码并且可以被设置在硬件加速卡104上或被设置在耦合到硬件加速器卡104的不同电路板或系统上。
外部处理器804能够执行多种不同功能中的任一种。可以由处理器804执行的功能的示例包括但不限于OVS控制平面、存储、管理等。
在图8的示例中,静态区域202中不包括(多个)存储器控制器。在一个或多个其他示例中,(多个)存储器控制器可以被包括在平台218中。(多个)存储器控制器可以连接到DMA电路210、动态区域204中的用户指定电路系统216和/或504、和/或到主机系统100。如所讨论的,平台218可以使用一个或多个PR区域来实现。在一方面,PCIe控制器212和PCIe控制器802可以在静态区域202中实现,而其他组件被包括在一个或多个PR区域中。
参考图7和图8的示例实现,主机系统可以实现一个或多个虚拟机。每个虚拟机具有两个独立的虚拟接口。一个虚拟接口用于联网,另一个虚拟接口用于存储。网络流量附接到多队列DMA接口并且通过处理管线,该处理管线包括网络卸载,诸如接收端缩放(RSS)、LSO/TSO(大量发送卸载(Large Send Offload)/TCP分段卸载)、虚拟可扩展(VX)局域网/NVGRE(使用通用路由封装的网络虚拟化)隧道卸载以及SDN匹配/动作处理(诸如OVS)。存储流量通过可选地利用RDMA能力而编程的嵌入式处理器702或外部处理器804来卸载。存储流量可以穿过处理管线,该处理管线包括NVMe和存储卸载操作,诸如在动态区域204中执行的压缩和/或加密。经处理的数据然后可以与NIC控制器208的数据管线合并。
图9图示了NIC控制器208的示例实现。在图9的示例中,NIC控制器208包括以太网接口902、线中凸块(bump-in-the-wire,BITW)仲裁电路904、NIC核心906、加速器仲裁电路908和DMA接口910。为了说明和讨论的目的,NIC核心906和加速器仲裁电路908各自可以被称为NIC控制器208的“级”。在一些示例实现中,NIC核心906本身可以由多个不同级的电路系统形成或包括多个不同级的电路系统。
在图9的示例中,以太网接口902连接到以太网接口206(例如,MAC 304)。DMA接口910连接到DMA电路210。DMA接口910、加速器仲裁电路908、NIC核心906、BITW仲裁电路904和以太网接口902各自支持入口数据流(例如,数据从以太网接口206流入NIC控制器208)和出口数据流(例如,数据从NIC控制器208流出到以太网接口206)。
如图所示,BITW仲裁电路904、NIC核心906、加速器仲裁电路908和DMA接口910中的每个包括到动态区域204的入口通信接口和到动态区域204的出口通信接口。在一方面,通信接口可以包括入口通信接口和出口通信接口。例如,参考图9,每个入口/出口对可以表示一个通信接口。然而,在其他示例中,通信接口可以仅包括(多个)入口通信接口或仅包括(多个)出口通信接口。被描述为具有到动态区域204的一个或多个通信接口的电路块中的每个电路块能够经由适当的入口或出口通信接口发送出口数据和/或入口数据以用于在动态区域204中所图示的各种用户电路912、914、916、918、920和/或922中的任一用户电路内的进一步处理。
在另一示例实现中,BITW仲裁电路904可以被实现为将入口和/或出口数据路径连接到动态区域204的一个或多个多路复用器(例如,开关)。BITW仲裁电路904允许NIC控制器208包括在以太网接口902与NIC核心906之间的一个或多个接口。BITW仲裁电路904能够经由入口通信接口将从以太网接口902接收到的数据直接发送到一个或多个用户电路,诸如用户电路914,以用于分组处理。用户电路914能够对接收到的数据执行分组处理并且将经处理的数据经由入口通信接口提供回BITW仲裁电路904。BITW仲裁电路904然后可以将经处理的数据转发给NIC控制器核心906。
在特定实现中,BITW仲裁电路904可以被配置为对数据进行转向。例如,BITW仲裁电路904可以从以太网接口902接收数据并且将数据发送回以太网接口902以输出到以太网接口206。BITW仲裁电路904可以或可以在对数据进行转向之前不向动态区域204中的用户电路系统提供数据。在任何情况下,由NIC控制器208从网络138接收的数据可以使用BITW仲裁电路904来可选地处理、转向并且从NIC控制器208发送回网络138。
BITW仲裁电路904还能够经由出口通信接口将从NIC核心906接收的数据直接发送给一个或多个用户电路,例如用户电路912,以用于分组处理。用户电路912能够对接收到的数据执行分组处理并且将经处理的数据经由出口通信接口提供回BITW仲裁电路904。BITW仲裁电路904然后可以将经处理的数据转发给以太网接口902。在另一例子中,在用户电路912和/或用户电路914之间经由BITW仲裁904交换足够的数据的情况下,NIC核心906能够执行诸如对随后的更高协议层的解析的操作。
在特定实现中,BITW仲裁电路904可以被配置为对数据进行转向。例如,BITW仲裁电路904可以从NIC控制器906接收数据并且将数据发送回NIC控制器906以输出到DMA电路210。BITW仲裁电路904可以或可以不在对数据进行转向之前向动态区域204中的用户电路系统提供数据。在任何情况下,由NIC控制器208从主机系统接收到的数据可以使用BITW仲裁电路904来可选地处理、转向并且从NIC控制器208发送回主机系统。
如此,BITW仲裁电路904用作其中在进入NIC控制器208的处理阶段之前可以将入口数据提供给动态区域204中的用户指定电路系统的交换机或接口。类似地,BITW仲裁电路904用作其中在离开NIC控制器208之前可以将出口数据直接提供给动态区域204中的用户指定电路系统的交换机或接口。如所讨论的,BITW仲裁电路904也可以对入口和/或出口数据进行转向。
在一方面,入口和出口通信接口被实现为流接口。在一个示例实现中,用户电路912和用户电路914可以实现互联网协议安全(IPSec)电路块。例如,在由用户电路914处理之后,导向NIC核心906的入口分组可以被完全解密,从而可以进一步处理诸如传输控制协议(TCP)的更高层协议。来自NIC核心906的未加密的出口分组(例如,纯文本)可以由用户电路912加密。
在另一方面,用户电路912能够执行诸如添加以太网IP和TCP报头或GRE的操作。用户电路914可以用于实现GRE报头移除,这也称为解封装。用户电路912能够执行GRE报头的插入(也称为封装)。再次,用户电路912和/或914能够在以太网接口206与NIC核心906之间的数据路径中的点处对数据执行操作。
NIC核心906能够经由入口通信接口将从BITW仲裁电路904接收的数据直接发送给一个或多个用户电路(诸如用户电路918),以用于分组处理。用户电路918能够对接收到的数据执行分组处理并且经由入口通信接口将经处理的数据提供回NIC核心906。NIC核心906然后可以将经处理的数据转发给加速仲裁电路908。
NIC核心906能够经由出口通信接口将从加速仲裁电路908接收的数据直接发送给一个或多个用户电路(诸如用户电路916),以用于分组处理。用户电路916能够对接收到的数据执行分组处理并且经由出口通信接口将经处理的数据提供回NIC核心906。NIC核心906然后可以将经处理的数据转发给BITW仲裁电路904。
在一方面,用于NIC核心906的入口和出口通信接口被实现为三元内容可寻址存储器(TCAM)接口(例如,至少一个用于入口,至少一个用于出口)。用户电路916和/或用户电路918可以实现多种不同电路(包括但不限于访问控制列表/流程表、算法TCAM、MAC过滤器和/或算法内容可寻址存储器(CAM))中的任何一种。
在另一示例中,在视频处理的情况下,诸如UDP和校验和卸载的操作可以由NIC核心906执行。(多个)用户电路918和/或916可以用于执行流查找以标识应将数据导向何处。数据可以被导向实现流表的用户电路918和/或916所指示的任何地方。例如,用户可能希望使用比可以在NIC核心906中实现的表更大的表。如此,(多个)用户电路918和/或916可以使用动态区域202中的附加RAM来扩展被包括在NIC核心906中的表。
加速仲裁电路908能够经由入口通信接口将从NIC核心906接收的数据直接发送给一个或多个用户电路(诸如用户电路922),以用于分组处理。用户电路922能够对接收到的数据执行分组处理并且将经处理的数据经由入口通信接口提供回加速仲裁电路908。加速仲裁电路908然后可以将经处理的数据转发给DMA接口910。
加速仲裁电路908能够经由出口通信接口将从DMA接口910接收的数据直接发送给一个或多个用户电路(诸如用户电路920),以用于分组处理。用户电路920能够对接收到的数据执行分组处理并且将经处理的数据经由出口通信接口提供回加速仲裁电路908。加速仲裁电路908然后可以将经处理的数据转发给NIC核心906。
在示例实现中,加速器仲裁电路908位于TCP/IP、校验和卸载和其他高级功能性已经被执行之后的数据路径中。分组和相关联的元数据可以被传递给动态区域202,其中用户电路(例如,用户电路920和/或922)能够执行增量式加速。即,如果用户电路920和/或922正在执行高级操作,则该电路系统不需要重新执行在NIC控制器208的数据管线中的别处执行的先前操作。
在一方面,入口和出口通信接口被实现为流接口(例如,至少一个用于入口,至少一个用于出口)。在示例实现中,用户电路920和用户电路922可以实现用于执行层4及以上深度包检查的电路。
DMA接口910能够将从加速仲裁电路908接收的数据发送给DMA电路210。DMA接口910能够将从DMA电路210接收的数据发送给加速器仲裁电路908。
在图9的示例中,用户电路被示为在单个PR区域中实现。应当理解,可以在包括用户电路的各种组合的动态区域204中实现两个或更多个PR区域。在另一示例中,用户电路912和914在一个PR区域中实现;用户电路916和918在另一PR区域中实现;以及用户电路920和922在又一PR区域中实现。此外,不同用户电路和接口的各种示例旨在用于说明而非限制。在另一示例中,每个用户电路可以在不同的PR区域中实现。
如图9的示例中所图示的,平台218能够将多个不同的通信接口提供到动态区域204中。这些通信接口(例如,连接点)允许数据在被支持的各种连接点中的任一连接点处在平台218与动态区域204中实现的动态加载功能之间移动。如所提及的,所描述的将平台218连接到动态区域204的通信接口(例如,NIC控制器208的通信接口)中的一个或多个或所有通信接口是软件可控的。如此,可编程IC 132中的嵌入式处理器(无论是如图7所示的硬连线还是软的)或外部设备或处理器(例如,如图8所示)、和/或主机系统的处理器能够在单独的基础上控制通信接口中的每个通信接口是开启以在静态平台218与动态区域204之间交换数据还是关闭以防止在平台218与动态区域204之间交换数据。
图10图示了在可编程IC 132中实现的平台218的另一示例。在图10的示例中,平台218包括流业务管理器1002。流业务管理器1002连接到加速器仲裁电路908和DMA电路210。尽管在图10中未图示,但流业务管理器1002可以包括到动态区域204的一个或多个连接。
流业务管理器1002能够调节主机系统100与在动态区域204中实现的电路之间的数据流/分组的流动。在图10的示例中,流业务管理器1002调节主机系统100与用户电路1010和/或用户电路1012之间的数据的流动。在其他示例中,动态区域204可以包括附加的用户电路,例如内核电路,其可以经由互连(未示出)连接到流业务管理器1002。
在图10的示例中,动态区域204被划分为PR区域1006和1008。PR区域1006包括用户电路1010。PR区域1008包括用户电路1012。PR区域1006和1008中的每个PR区域可以独立于彼此被动态地重新配置。因此,由于用户电路1010在PR区域1006中而用户电路1012在PR区域1008中,用户电路1010可以被移除或替换而不影响用户电路1012或平台218的操作。类似地,由于用户电路1012在PR区域1008中实现,用户电路1012可以被移除或替换而不影响用户电路1010或平台218的操作。如所讨论的,PR区域1006、1008(例如,整个动态区域204)中的一者或两者可以被重新配置而不中断平台218的操作。应当理解,虽然动态区域204被示为包括两个PR区域,但在另一示例中,用户电路1010和用户电路1012可以在单个PR区域中实现。
在一方面,用户电路1012实现能够执行高速分组处理的算法TCAM。用户电路1010实现能够在跨IP网络的两个通信点之间执行操作的IPSec电路,该操作包括但不限于数据认证、完整性和/或机密性。
在图10的示例中,用户电路1010能够从NIC核心906接收数据,处理数据,并且将经处理的数据提供回NIC核心906。用户电路1012图示了一个示例,其中用户电路1012(例如,IPSec电路)可以由主机系统100编程。在这种情况下,主机系统100(例如,或另一可信处理器,无论是内部还是外部)能够通过PCIe控制器212和用户电路1012被耦合到其的控制接口将后配置数据发送给用户电路1012。控制接口的一个示例是符合AXI-Light协议的接口,但也可以使用其他控制接口。
图11图示了在可编程IC 132中实现的平台218的另一示例。在图11的示例中,流业务管理器1002连接到互连1102和动态区域204中的互连1106。互连1102可以是存储器映射互连,而互连1106可以是流互连。互连1102连接到一个或多个网络内核1104。互连1106连接到一个或多个计算内核1108。流业务管理器1002和/或加速器仲裁908能够管理主机系统100与网络内核1104和计算内核1108之间的数据流(data flow)(例如,引导数据流)。在图11的示例中,加速器仲裁电路908能够经由流业务管理器1002与在动态区域204中实现的用户电路系统通信。
虽然动态区域204被示为包括单个PR区域,但是在另一方面,动态区域204可以包括多个PR区域。例如,用户电路1012可以在第一PR区域中实现,而用户电路1010在第二PR区域中实现。此外,互连1102、1106和网络内核1104、1108可以在第三PR区域中实现。在另一方面,互连1102和(多个)网络内核1104在第三PR区域中实现,而互连1106和(多个)网络内核1108在第四PR区域中实现。在图10和图11的示例中,流业务管理器1002可以在PR区域中独自实现或者在具有平台218的一个或多个其他组件的PR区域内实现。备选地,流业务管理器1002可以在静态区域202中实现。
使用流业务管理器1002(可以至少部分地作为交换机操作),来自主机系统的数据可以经由加速器仲裁908被路由到互连1102并且到一个或多个网络内核1104上、到互连1106并且到一个或多个计算内核1108上、或到NIC控制器208。例如,流业务管理器1002可以接收具有指定流程(例如,路由或目的地)的分组。流业务管理器1002能够标识用于接收到的分组的流动并且将分组分发给与所标识的流程相对应的目的地。这允许动态区域204执行计算功能(例如,从主机系统100卸载的任务的硬件加速)并且同时执行网络功能。
作为另一示例,图11中所图示的架构允许数据(例如,分组)从主机系统100流动到动态区域204以用于处理(例如,通过(多个)计算内核和/或(多个)网络内核)并且返回到主机系统100或从主机系统100流动到动态区域204以用于处理(例如,通过(多个)计算内核和/或(多个)网络内核)并且通过NIC控制器208输出到以太网,其中NIC控制器208可以或可以不使用动态区域204(例如,用户电路1010和/或1012)进一步处理数据。因此,主机系统100可以将数据发送给动态区域204(例如,计算内核1108)以用于处理。流业务管理器1002可以确定是否将来自动态区域204的结果数据输出发送回主机系统100或NIC控制器208。
虽然图11中未图示,但在另一示例中,数据可以在计算内核与网络内核(或连接到NIC控制器208的用户电路)之间直接交换。
图12图示了在可编程IC 132中实现的另一示例平台。在图12的示例中,静态区域202的部分被示为包括NIC控制器208和流业务管理器1002。为了便于说明,未示出静态区域202的其他元件。此外,与图示分开的入口和出口通信接口相反,更一般地示出了NIC控制器208的组件之间的通信接口。
图12所示的架构旨在用于说明目的以示出可以用于扩展平台218和NIC控制器208的能力的更复杂和强大的处理。在该示例中,动态区域204被细分为多个域。每个域专用于特定功能性。例如,动态区域202包括NIC扩展域1202、存储域1204、流域1206和存储器映射域1208。在一方面,每个域被实现为不同的PR区域。
NIC扩展域1202可以包括连接到加速仲裁电路908的流接口1210。流接口1210连接到RDMA电路1212。流接口1210进一步连接到流域1206中的流互连1230并且连接到流到存储器映射接口(stream-to-memory-mapped interface)1228。流到存储器映射接口1228桥接域1206和1208。例如,接口1228的流到存储器映射电路系统可以位于域1206中,而接口1228的存储器映射到流电路系统的可以位于域1208中。NIC扩展域1202还包括连接到NIC核心906的算法查找电路1214和连接到BITW接口904的层4处理和查找电路1216。
存储域1204包括连接到流业务管理器1002的NVMe EP 1218。NVMe EP 1218还连接到NVMe到NVMeoF 1220和到NVMe/聚合/加密电路1222。NVMe到NVMeoF 1220还连接到NIC扩展域1202的RDMA 1212。NVMe/聚合/加密电路1222连接到也被包括在存储域1204中的PCIeRP 1224和PCIe 1226。PCIe RP 1224和1226能够连接到外部非易失性存储(例如,非易失性存储136,诸如SSD)。
流域1206包括流互连1230,流互连1230连接到流业务管理器1002。流域1206也包括连接到流互连1230的一个或多个流内核1232。存储器映射域1208包括存储器映射互连1234,存储器映射互连1234连接到流业务管理器1002。存储器映射域1208还包括一个或多个存储器映射内核1236,一个或多个存储器映射内核1236连接到存储器映射互连1234。存储器映射互连1234可以通过一个或多个存储器控制器(未示出)连接到一个或多个外部DDR存储器(例如,易失性存储器134)。流到存储器映射接口1228也能够通过一个或多个存储器控制器(也未示出)连接到一个或多个外部DDR存储器(例如,易失性存储器134)。
图12是出于说明而非限制的目的而提供的。在其他示例中,可以在动态区域202中在任何给定时间下实现域的一个或多个或任意组合。此外,可以在可编程IC 132的操作期间根据需要使用动态部分重新配置来添加和/或移除特定域。
例如,一旦平台在可编程IC 132中实现,第一部分配置比特流可以被加载到可编程IC 132中以配置动态区域202来仅包括流域1206和存储器映射域1208。在另一时间下,第二部分配置比特流可以被加载到可编程IC 132中以配置动态区域202来实现存储域1204、流域1206和存储器映射域1208。在另一时间下,第三部分配置比特流可以被加载到可编程IC 132中以配置动态区域202来实现NIC扩展域1202、存储域1204、流域1206和存储器映射域1208。
在另一方面,每个域被实现为不同的PR区域。如此,在每个相应域中实现的电路系统可以随时间改变而不影响其他域中的电路系统。在域相互接口的情况下,数据流动可以暂时停止,直到连接PR区域已完成部分重新配置。
图13图示了对实现如本文中所描述的智能NIC功能性的可编程IC进行操作的示例方法1300。在一方面,结合图13所描述的与可编程IC的配置相关的操作可以由主机系统执行或启动。
在块1302中,可编程IC在设备中实现平台。该平台至少部分地在可编程IC的静态电路系统中实现。例如,主机系统能够将指定平台的配置比特流(例如,完整或部分配置比特流)写入非易失性存储器136。可编程IC能够在启动时自举并且加载用于平台的配置比特流。平台的配置比特流可以在操作期间驻留在可编程IC中。如所讨论的,配置比特流至少部分地定义了静态区域并且在静态区域中物理地实现平台。块1302中的配置比特流的加载也可以将设备的动态区域定义为可编程IC中不用于实现平台的部分。
在使用一个或多个PR区域来实现平台的实施方式中,可以通过加载多个部分配置比特流来指定平台。例如,一个部分配置比特流可以被加载,实现静态区域中的平台的部分。针对用于实现平台的每个PR区域,另一部分配置比特流被加载用于该PR区域。
在块1304中,可编程IC建立与主机系统和网络的通信链路。例如,平台的PCIe控制器与主机系统建立通信链路。平台的以太网接口与网络(例如,网络中的节点或交换机)建立通信链路。应当理解,一旦在可编程IC中实现平台,可编程IC就能够在主机系统与网络之间来回传送数据。
在块1306中,可编程IC在设备的动态区域中实现用户指定电路系统。例如,主机系统能够通过在其中加载部分配置比特流来启动可编程IC的部分重新配置。部分配置比特流在设备的动态区域中实现用户指定电路系统。在动态区域包括单个PR区域的情况下,可以加载单个部分配置比特流。在动态区域包括多个PR区域的情况下,主机系统能够启动多个部分配置比特流到可编程IC中的加载。例如,可以为每个PR区域加载一个部分配置比特流。在任何情况下,可以在动态区域的每个PR区域中实现一个或多个内核以实现用户指定电路系统。
在一方面,作为实现用户指定电路系统的部分,通信接口基于与被加载的(多个)部分配置比特流相关联的元数据来选择性地启用和/或禁用。在动态区域包括多个PR区域的情况下,用于给定PR区域的部分配置比特流可以包括对耦合到该特定PR区域的NIC控制器的通信接口进行编程所必需的元数据。
在块1308中,可编程IC能够使用用户指定电路系统来执行如本公开中所描述的一个或多个操作。在块1308中,用户指定电路系统是可操作的以非对称地处理用于出口和入口数据的数据。即,在入口数据由动态区域中的一个或多个内核处理或根本不使用此类内核处理的同时,出口数据可以独立于对入口数据所执行的处理由动态区域中的一个或多个不同内核处理或根本不由此类内核处理。
在块1308中,左侧的块说明了入口数据的处理,而右侧的块说明了出口数据的处理。在块1310中,可编程IC从网络接收数据。以太网接口接收数据并且将数据提供给NIC控制器。在块1312中,平台中的NIC控制器能够与动态区域中的用户指定电路系统交换数据。数据从一个或多个软件控制的通信接口发出,由用户指定电路系统处理,并且返回到平台。在块1314中,平台将经处理的数据发送给主机系统。例如,数据被提供给DMA电路和PCIe控制器。PCIe控制器将经处理的数据提供给主机系统。
在块1316中,可编程IC从主机系统接收数据。PCIe控制器从主机系统接收数据并且将数据提供给DMA电路。DMA电路将数据提供给平台中的一个或多个其他电路。在块1318中,NIC控制器能够与动态区域中的用户指定电路系统交换数据。数据从软件控制的通信接口中的一个或多个通信接口发出,由用户指定电路系统处理,并且返回到平台。在块1320中,平台将经处理的数据发送给网络。例如,数据被提供给以太网接口。以太网接口将经处理的数据提供给网络。
在一方面,作为框1308的部分或在如本文中所描述的处理器的控制下的任何时间处,平台的软件控制的通信接口中的一个或多个通信接口可以被开启或关闭。例如,在实现动态区域时,软件控制的通信接口中的每个通信接口可以被置于特定状态(开或关)。随着可编程IC继续操作,软件控制的通信接口可以彼此独立地开启或关闭,并且独立于动态区域的部分重新配置。
例如,给定的软件控制的通信接口可以被开启,然后在动态区域不中断地继续操作的情况下关闭。在一些情况下,软件控制的通信接口当动态区域中连接到其的部分(例如,特定的PR区域)正在经历部分重新配置时可以被停用。在PR区域的部分重新配置成功时,可以重新开启软件控制的通信接口。在任何情况下,如所描述的对通信接口的动态控制允许通过动态区域的数据流被动态改变而无需在动态区域中启动任何部分重新配置。
在块1322中,确定是否检测到触发事件。在一方面,主机系统能够接收针对将在可编程IC中实现的不同类型的用户指定电路系统的请求,其中该请求被视为用于部分重新配置的触发事件。在另一示例中,触发事件可以是由可编程IC本身检测到的信号或信号组合,其使可编程IC通知主机系统需要部分重新配置。在任何情况下,响应于检测到触发事件,方法1300循环回到块1306。响应于未检测到触发事件,方法1300继续到块1324,其中可编程IC继续以平台和动态区域的当前配置操作。方法1300可以在块1322和1324之间迭代,直到检测到触发事件。
在块1306中,可编程IC被部分地重新配置。例如,主机系统将一个或多个其他部分配置比特流加载到可编程IC中。可编程IC可以在动态区域中实现全新的用户指定电路系统(例如,其中动态区域包括单个PR区域)或仅在动态区域的一个或多个选定或所有PR区域中实现新的/不同的用户指定电路系统。此外,与动态区域的先前配置相比,在动态区域中实现的PR区域的数目可以改变。
本文中所描述的本发明的布置图示了在可编程IC中实现的平台,该平台支持动态的(例如,在运行时期间)与网络流量一致的功能的插入和/或替换。通过该平台,可编程IC能够继续在网络与主机系统之间传递网络流量,而不丢失数据。插入的功能可以被插入在通过平台的数据流内的各种插入点中的任一插入点处。
图14图示了在可编程IC上实现平台的示例方法1400。在框1402中,在设备上提供至少部分地在可编程电路系统的静态区域中实现的平台。在块1404中,在设备上提供被配置为实现与平台通信的用户指定电路系统的可编程电路系统的动态区域。该平台被配置为建立和维护与主机数据处理系统的第一通信链路和与网络的第二通信链路,同时可编程电路系统的动态区域的至少部分被动态重新配置。
图15图示了用于IC的示例架构1500。架构1500可以用于实现如本文中所描述的可编程IC(诸如可编程IC 132)。作为示例,架构1500可以用于实现现场可编程门阵列(FPGA)。架构1500也可以表示片上系统(SoC)类型的IC。SoC是包括执行程序代码的处理器和一个或多个其他电路的IC。其他电路可以被实现为硬连线电路系统、可编程电路系统和/或它们的组合。这些电路可以相互协作和/或与处理器协作。
如所示出的,架构1500包括若干不同类型的可编程电路,例如逻辑块。例如,架构1500可以包括大量不同的可编程分块,包括多吉比特收发器(MGT)1501、可配置逻辑块(CLB)1502、随机存取存储器块(BRAM)1503、输入/输出块(IOB)1504、配置和时钟逻辑(CONFIG/CLOCKS)1505、数字信号处理块(DSP)1506、专用I/O块1507(例如,配置端口和时钟端口)以及其他可编程逻辑1508(诸如数字时钟管理器、模拟到数字转换器、系统监测逻辑等)。
在一些IC中,每个可编程分块包括可编程互连元件(INT)1511,可编程互连元件(INT)1511具有到和来自每个相邻分块中的对应INT1511的标准化连接。因此,INT 1511一起实现所图示的IC的可编程互连结构。每个INT 1511还包括到和来自同一分块内的可编程逻辑元件的连接,如在图15的顶部处所包括的示例所示。
例如,CLB 1502可以包括可配置逻辑元件(CLE)1512外加单个INT 1511,可配置逻辑元件(CLE)1512可以被编程以实现用户逻辑。除一个或更多个INT 1511之外,BRAM 1503还可以包括BRAM逻辑元件(BRL)1513。通常,被包括在分块中的INT 1511的数目取决于分块的高度。如图所示,BRAM分块具有与五个CLB相同的高度,但也可以使用其他数目(例如,四个)。除了适当数目的INT 1511之外,DSP分块1506还可以包括DSP逻辑元件(DSPL)1514。例如,除了INT 1511的一个实例之外,IOB 1504还可以包括I/O逻辑元件(IOL)1515的两个实例。连接到IOL 1515的实际I/O焊盘可以不限于IOL 1515的区域。
在图15所示的示例中,靠近管芯中心的水平区域(例如由区域1505、1507和1508形成)可以用于配置、时钟和其他控制逻辑。从该水平区域延伸的垂直区域1509可以用于跨可编程IC的宽度分布时钟和配置信号。
利用图15中所图示的架构的一些IC包括附加逻辑块,附加逻辑块影响了构成IC大部分的常规柱状结构。附加逻辑块可以是可编程块和/或专用电路系统。例如,被描述为PROC 1510的处理器块跨越若干列的CLB和BRAM。
在一方面,PROC 1510可以被实现为专用电路系统,例如,作为硬连线处理器,其被制造为管芯中实现IC的可编程电路系统的部分。PROC 1510可以表示各种不同的处理器类型和/或系统中的任何一种,其复杂性从个体处理器(例如,能够执行程序代码的单个核)到具有一个或多个核、模块、协处理器、接口等的整个处理器系统。
在另一方面,PROC 1510可以从架构1500中省略并且利用所描述的其他种类的可编程块中的一个或多个可编程块来替换。此外,此类块可以用于形成“软处理器”,因为可编程电路系统的各种块可以用于形成能够执行程序代码(与PROC 1510一样)的处理器。
短语“可编程电路系统”是指IC内的可编程电路元件,例如,本文中所描述的各种可编程或可配置电路块或分块、以及根据被加载到IC中的配置数据来选择性地耦合各种电路块、分块和/或元件的互连电路系统。例如,图15中所示的在PROC 1510外部的电路块(诸如CLB 1502和BRAM 1503)被认为是IC的可编程电路系统。
通常,可编程电路系统的功能性直到配置数据被加载到IC中才被建立。一组配置比特可以用于对诸如FPGA的IC的可编程电路系统进行编程。(多个)配置比特通常被称为“配置比特流”。通常,如果不首先将配置比特流加载到IC中,可编程电路系统将无法操作或起作用。配置比特流有效地实现了可编程电路系统内的特定电路设计。电路设计指定了例如可编程电路块的功能方面和各种可编程电路块之间的物理连接性。
“硬连线”或“硬化”(即不可编程的)电路系统被制造为IC的部分。与可编程电路系统不同,硬连线电路系统或电路块不是在IC制造之后通过配置比特流的加载来实现的。硬连线电路系统通常被认为具有专用电路块和互连(例如,无需首先将配置比特流加载到IC中即可运行),例如PROC 1510。
在一些实例中,硬连线电路系统可以具有一种或多种操作模式,其可以根据寄存器设置或被存储在IC内的一个或多个存储器元件中的值来设置或选择。例如,可以通过将配置比特流加载到IC中来设置操作模式。尽管有这种能力,硬连线电路不被视为可编程电路系统,因为硬连线电路系统是可操作的并且在作为IC的部分来制造时具有特定功能。
在SoC的情况下,配置比特流可以指定要在可编程电路系统内实现的电路系统以及要由PROC 1510或软处理器执行的程序代码。在一些情况下,架构1500包括专用配置处理器,专用配置处理器将配置比特流加载到适当的配置存储器和/或处理器存储器。专用配置处理器不执行用户指定的程序代码。在其他情况下,架构1500可以利用PROC 1510来接收配置比特流、将配置比特流加载到适当的配置存储器中、和/或提取用于执行的程序代码。
图15旨在图示可以用于实现包括可编程电路系统(例如,可编程结构)的IC的示例架构。例如,一列中的逻辑块的数目、列的相对宽度、列的数目和顺序、被包括列中的逻辑块的类型、逻辑块的相对大小以及被包括在图15的顶部处的互连/逻辑实现纯粹是说明性的。例如,在实际的IC中,多于一个相邻列的CLB通常被包括在CLB出现的任何地方,以促进用户电路设计的有效实现。然而,相邻CLB列的数目可以随IC的整体大小而变化。此外,IC内诸如PROC1510的块的大小和/或定位仅用于说明的目的并且不旨在作为限制。
为了说明的目的,阐述了特定的命名法以提供对本文中所公开的各种发明概念的透彻理解。然而,本文中所使用的术语仅用于描述本发明布置的特定方面的目的,并不旨在进行限制。
如本文中所定义的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另有明确指示。
如本文中所定义的,除非另有明确说明,否则术语“至少一个”、“一个或多个”和“和/或”是开放式表达,在操作中既是连接的又是分离的。例如,表述“A、B和C中的至少一个”、“A、B或C中的至少一个”、“A、B和C中的一个或多个”、“A、B或C中的一个或多个”和“A、B和/或C”是指单独的A、单独的B、单独的C、A和B一起、A和C一起、B和C一起,或A、B和C一起。
如本文中所定义的,术语“自动地”是指无需人工干预。
如本文中所定义的,术语“计算机可读存储介质”是指包含或存储由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的程序代码的存储介质。如本文中所定义的,“计算机可读存储介质”本身不是瞬态的、传播的信号。计算机可读存储介质可以是但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。如本文中所描述的,各种形式的存储器是计算机可读存储介质的示例。计算机可读存储介质的更具体示例的非详尽列表可以包括:便携式计算机软盘、硬盘、RAM、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、电子可擦除可编程只读存储器(EEPROM)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能磁盘(DVD)、记忆棒、软盘等。
如本文中所定义的,术语“如果”是指“当……时”或“在…时”或“响应于”或“响应”,这取决于上下文。因此,短语“如果确定”或“如果检测到【陈述的条件或事件】”可以被解释为“在确定……时”或“响应于确定”或“在检测到【陈述的条件或事件】时”或“响应于检测【陈述的条件或事件】”或“响应检测【陈述的条件或事件】”取决于上下文。
如本文中所定义的,术语“响应”和如上所述的类似语言,例如,“如果”、“当…时”或“在……时”是指对动作或事件的迅速响应或反应。响应或反应是自动执行的。因此,如果“响应”第一动作而执行第二动作,则在第一动作的发生和第二动作的发生之间存在因果关系。术语“响应”表示因果关系。
如本文中所定义的,术语“处理器”是指至少一个硬件电路。硬件电路可以被配置为执行被包含在程序代码中的指令。硬件电路可以是集成电路。处理器的示例包括但不限于中央处理单元(CPU)、阵列处理器、向量处理器、数字信号处理器(DSP)、FPGA、可编程逻辑阵列(PLA)、ASIC、可编程逻辑电路系统以及控制器。
如本文中所定义的,术语“实时”是指用户或系统感测到对于要进行的特定过程或确定足够即时的处理响应性水平,或者使处理器能够跟上某些外部处理。
如本文中所定义的,术语“基本上”是指不需要精确地实现所述特征、参数或值,而是偏差或变化(包括例如容差、测量误差、测量精度限制和本领域技术人员已知的其他因素)可以以不妨碍该特性旨在提供的效果的量出现。
术语第一、第二等在本文中可以用于描述各种元件。这些元件不应受这些术语的限制,因为除非另有说明或上下文另有明确指示,否则这些术语仅用于将一个元件与另一元件区分。
计算机程序产品可以包括其上具有计算机可读程序指令的(多个)计算机可读存储介质,该计算机可读程序指令用于使处理器执行本文中所描述的本发明布置的方面。在本公开中,术语“程序代码”与术语“计算机可读程序指令”可互换使用。本文中所描述的计算机可读程序指令可以从计算机可读存储介质被下载到相应的计算/处理设备,或者经由网络(例如互联网、LAN、WAN和/或无线网络)被下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或包括边缘服务器的边缘设备。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令并且转发计算机可读程序指令以用于在相应计算/处理设备内的计算机可读存储介质中的存储。
用于执行本文中所描述的本发明布置的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令或以一种或多种编程语言(包括面向对象的编程语言和/或程序性编程语言)的任意组合编写的源代码或对象代码。计算机可读程序指令可以包括状态设置数据。计算机可读程序指令可以完全在用户计算机上、部分在用户计算机上、作为独立式软件包、部分在用户计算机上并且部分在远程计算机上或完全在远程计算机或服务器上执行。在后者情况下,通过任何类型的网络(包括LAN或WAN)或者(例如,通过使用互联网服务提供商的互联网)到外部计算机的连接,远程计算机可以连接到用户的计算机。在一些情况下,包括例如可编程逻辑电路系统、FPGA或PLA的电子电路系统可以通过利用计算机可读程序指令的状态信息以使电子电路系统个性化来执行计算机可读程序指令,以便执行本文中所描述的本发明布置的方面。
本文参考方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明布置的某些方面。应当理解,流程图和/或框图的每个块、以及流程图和/或框图中的块的组合可以由计算机可读程序指令(例如程序代码)来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以生产机器,使得经由计算机的处理器或其他可编程数据处理装置执行的指令创建了用于实现在流程图和/或框图(多个)块中指定的功能/动作的部件。这些计算机可读程序指令也可以被存储在计算机可读存储介质中,该计算机可读存储介质可以引导计算机、可编程数据处理装置和/或其他设备以特定方式运行,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现在流程图和/或框图(多个)块中指定的操作的方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使要在计算机、其他可编程装置或其他设备上执行的一系列操作产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或框图(多个)块中指定的功能/动作。
附图中的流程图和框图示出了根据本发明布置的各个方面的系统、方法和计算机程序产品的可能实现的架构、功能性和操作。在这方面,流程图或框图中的每个块可以表示模块、分段或指令的部分,其包括用于实现指定操作的一个或多个可执行指令。
在一些备选实施方式中,块中所提及的操作可以不按照附图中所提及的顺序发生。例如,根据所涉及的功能性,连续示出的两个块可以基本上同时执行,或者块有时可以以相反的顺序执行。在其他示例中,块通常可以以递增的数字顺序执行,而在其他示例中,一个或多个块可以以不同的顺序执行,其中结果在随后的或不紧随其后的其他块中被存储和利用。还将注意,框图和/或流程图说明的每个块、以及框图和/或流程图说明中的块的组合可以由执行指定功能或动作或动作或执行专用硬件与计算机指令的组合的基于专用硬件的系统来实现。
可以在以下权利要求中找到的所有部件或步骤加功能元件的对应结构、材料、动作和等效物旨在包括用于如所具体要求的与其他所要求保护的元件组合执行功能的任何结构、材料或动作。
一种设备包括至少部分地在可编程电路系统的静态区域中实现的平台和可编程电路系统的动态区域,该动态区域被配置为实现与平台通信的用户指定电路系统。该平台被配置为建立和维护与主机数据处理系统的第一通信链路和与网络的第二通信链路,同时可编程电路系统的动态区域的至少部分被动态地重新配置。
前述和其他实现可以各自可选择地单独或组合地包括以下特征中的一个或多个。一些示例实现包括组合中的所有以下特征。
在另一方面,平台包括耦合到NIC控制器的以太网接口、耦合到网络接口卡控制器的DMA电路以及耦合到DMA电路的PCIe接口。
在另一方面,以太网接口、DMA电路或网络接口卡控制器中的至少一个在可部分重新配置的区域中实现。
在另一方面,用户指定电路系统被配置为执行分组处理。
在另一方面,平台包括具有连接到动态区域的通信接口的NIC控制器。
在另一方面,通信接口位于MAC与NIC控制器的第一级之间。
在另一方面,通信接口是软件可激活的。
在另一方面,NIC控制器包括多个互连级并且多个互连级中的至少一个具有通信接口。
在另一方面,多个互连级中的第一级和第二级各自具有被配置为连接到动态区域的独立通信接口。
在另一方面,每个通信接口连接到动态区域中的不同部分重新配置区域,并且每个部分重新配置区域能够被独立地重新配置以实现不同的用户指定电路。
在另一方面,在动态区域被重新配置以实现与平台通信的不同的用户指定电路系统的同时,平台继续不间断地操作。
一种方法包括:在设备上提供至少部分地在可编程电路系统的静态区域中实现的平台并且在该设备上提供可编程电路系统的动态区域,该动态区域被配置为实现与平台通信的用户指定电路系统。平台被配置为:在可编程电路系统的动态区域的至少部分被动态地重新配置的同时,建立和维护与主机数据处理系统的第一通信链路和与网络的第二通信链路,。
前述和其他实现可以各自可选择地单独或组合地包括以下特征中的一个或多个。一些示例实现包括组合中的所有以下特征。
在另一方面,平台包括耦合到NIC控制器的以太网接口、耦合到NIC控制器的DMA电路以及耦合到DMA电路的PCIe接口。
在另一方面,以太网接口、DMA电路或网络接口卡控制器中的至少一个在可部分重新配置的区域中实现。
在另一方面,用户指定电路系统被配置为执行分组处理。
在另一方面,方法包括:在平台内提供具有连接到动态区域的通信接口的NIC控制器。
在另一方面,通信接口位于MAC与NIC控制器的第一级之间。
在另一方面,方法包括:在软件控制下选择性地激活通信接口。
在另一方面,方法包括:在网络接口卡控制器中提供多个互连级,并且为多个互连级中的至少一个提供通信接口。
在另一方面,方法包括:提供多个互连级中的第一级和第二级,其中第一级和第二级中的每个具有被配置为连接到动态区域的独立通信接口。
在另一方面,每个通信接口连接到动态区域中的不同部分重新配置区域,并且每个部分重新配置区域能够被独立地重新配置以实现不同的用户指定电路。
在另一方面,方法包括:在平台继续不间断地操作的同时,重新配置动态区域以实现与平台通信的不同用户指定电路系统。
IC可以包括至少部分地在可编程电路系统的静态区域中实现的平台,其中该平台包括耦合到主机接口和网络接口的网络接口卡控制器。IC还可以包括可编程电路系统的动态区域,该动态区域被配置为实现与平台通信的用户指定电路系统。用户指定电路系统可以实现一个或多个分组处理功能。网络接口卡控制器包括连接到动态区域的多个通信接口。平台可以被配置为使用主机接口建立和维护与主机数据处理系统的第一通信链路和使用网络接口建立和维护与网络的第二通信链路。平台可以被配置为继续在网络与主机数据处理系统之间传输数据,同时可编程电路系统的动态区域的至少部分被动态地重新配置以在其中实现不同的用户指定电路系统。
前述和其他实现可以各自可选择地单独或组合地包括以下特征中的一个或多个。一些示例实现包括组合中的所有以下特征。
在另一方面,网络接口包括以太网接口。
在另一方面,网络接口耦合到仲裁电路,仲裁电路位于网络接口卡控制器的第一级与网络接口之间的静态区域中。多个通信接口中的第一通信接口将动态区域中的用户指定电路系统连接到仲裁电路。
在另一方面,仲裁电路被配置为:将从网络接口接收的数据路由回到网络的网络接口,而不将数据提供给网络接口卡控制器。
在另一方面,仲裁电路在由用户指定电路系统处理之后将数据路由回网络接口。
在另一方面,仲裁电路被配置为:将从网络接口卡控制器接收的数据路由回网络接口卡控制器,而不向网络接口提供数据。
在另一方面,仲裁电路在由用户指定电路系统处理之后将数据路由回网络接口卡控制器。
在另一方面,多个通信接口由主机数据处理系统选择性地启用。
在另一方面,网络接口卡控制器包括多个级,并且多个通信接口中的每个通信接口连接到多个级中的不同级。
在另一方面,动态区域包括多个部分重新配置区域,并且每个通信接口连接到多个部分重新配置区域中的不同的部分重新配置区域。多个部分重新配置区域中的每个部分重新配置区域能够被独立地重新配置以在其中实现不同的用户指定电路系统。
在另一方面,主机接口是PCIe接口。
在另一方面,IC可以包括在静态区域中实现的DMA电路,其中DMA电路连接到网络接口卡控制器和主机接口。存储器控制器可以在静态区域中实现。存储器控制器可以耦合到动态区域内的DMA电路和用户指定电路系统。
在另一方面,网络接口卡控制器包括网络接口核和加速器仲裁电路,该网络接口核连接到网络接口,该加速器仲裁电路连接到DMA电路。加速仲裁电路经由流接口耦合到动态区域的多个部分重新配置区域中的一个或多个部分重新配置区域。每个部分重新配置区域可以实现不同的功能性。
在另一方面,流接口在多个部分重新配置区域中的第一部分重新配置区域中实现,并且连接到网络接口控制器的加速器仲裁电路。用户指定电路系统可以在多个部分重新配置区域中的一个或多个其他部分重新配置区域中实现。
在另一方面,多个部分重新配置区域中的一个或多个部分重新配置区域包括一个或多个内核电路,该一个或多个内核电路被配置为执行从主机数据处理系统卸载的计算硬件加速任务。
本文中所提供的对本发明布置的描述是为了说明的目的,并不旨在穷举或限于所公开的形式和示例。选择本文中所使用的术语来解释本发明布置的原理、实际应用或对市场中发现的技术的技术改进,和/或使本领域普通技术人员能够理解本文中所公开的本发明布置。在不脱离所描述的本发明布置的范围和精神的情况下,修改和变化对于本领域普通技术人员来说是明显的。因此,应当参考以下权利要求而不是前述公开,以指示这些特征和实现的范围。
Claims (15)
1.一种集成电路,包括:
平台,至少部分地在可编程电路系统的静态区域中实现,其中所述平台包括网络接口卡控制器,所述网络接口卡控制器耦合到主机接口和网络接口;
可编程电路系统的动态区域,被配置为实现与所述平台通信的用户指定电路系统,其中所述用户指定电路系统实现一个或多个分组处理功能;
其中所述网络接口卡控制器包括连接到所述动态区域的多个通信接口;
其中所述平台被配置为:使用所述主机接口建立和维护与主机数据处理系统的第一通信链路,并且使用所述网络接口建立和维护与网络的第二通信链路;以及
其中所述平台被配置为:在可编程电路系统的动态区域的至少部分被动态地重新配置以在其中实现不同的用户指定电路系统的同时,继续在所述网络和所述主机数据处理系统之间传输数据。
2.根据权利要求1所述的集成电路,其中所述网络接口包括以太网接口。
3.根据权利要求1所述的集成电路,其中所述网络接口耦合到仲裁电路,所述仲裁电路位于所述网络接口卡控制器的第一级与所述网络接口之间的静态区域中;以及
所述多个通信接口中的第一通信接口将所述动态区域中的所述用户指定电路系统连接到所述仲裁电路。
4.根据权利要求3所述的集成电路,其中所述仲裁电路被配置为:将从所述网络接口接收到的数据路由回到所述网络的所述网络接口,而不将所述数据提供给所述网络接口卡控制器。
5.根据权利要求4所述的集成电路,其中所述仲裁电路在由所述用户指定电路系统处理之后将所述数据路由回所述网络接口。
6.根据权利要求3所述的集成电路,其中所述仲裁电路被配置为:将从所述网络接口卡控制器接收到的数据路由回所述网络接口卡控制器,而不将所述数据提供给所述网络接口。
7.根据权利要求5所述的集成电路,其中所述仲裁电路在由所述用户指定电路系统处理之后,将所述数据路由回所述网络接口卡控制器。
8.根据权利要求1所述的集成电路,其中所述多个通信接口由所述主机数据处理系统选择性地启用。
9.根据权利要求1所述的集成电路,其中所述网络接口卡控制器包括多个级,并且所述多个通信接口中的每个通信接口连接到所述多个级中的不同级。
10.根据权利要求9所述的集成电路,其中:
所述动态区域包括多个部分重新配置区域,并且每个通信接口连接到所述多个部分重新配置区域中的不同的部分重新配置区域;以及
所述多个部分重新配置区域中的每个部分重新配置区域能够被独立地重新配置,以在其中实现不同的用户指定电路系统。
11.根据权利要求1所述的集成电路,其中所述主机接口是外围组件互连快速(PCIe)接口。
12.根据权利要求1所述的集成电路,还包括:
直接存储器存取电路,在所述静态区域中实现,其中所述直接存储器存取电路连接到所述网络接口卡控制器和所述主机接口;以及
存储器控制器,在所述静态区域中实现,其中所述存储器控制器耦合到所述直接存储器存取电路和所述动态区域内的所述用户指定电路系统。
13.根据权利要求12所述的集成电路,其中所述网络接口卡控制器包括网络接口核和加速器仲裁电路,所述网络接口核连接到所述网络接口,所述加速器仲裁电路连接到所述直接存储器存取电路,其中所述加速仲裁电路经由流接口耦合到动态区域的多个部分重新配置区域中的一个或多个部分重新配置区域,并且其中每个部分重配置区域实现不同的功能性。
14.根据权利要求13所述的集成电路,其中所述流接口在所述多个部分重新配置区域的第一部分重新配置区域中实现,并且连接到所述网络接口控制器的所述加速器仲裁电路和在所述多个部分重新配置区域中的一个或多个其他部分重新配置区域中实现的用户指定电路系统。
15.根据权利要求13所述的集成电路,其中所述多个部分重配置区域中的一个或更多个部分重配置区域包括一个或多个内核电路,所述一个或多个内核电路被配置为执行从所述主机数据处理系统卸载的计算硬件加速任务。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/537,605 | 2019-08-11 | ||
US16/537,605 US10990547B2 (en) | 2019-08-11 | 2019-08-11 | Dynamically reconfigurable networking using a programmable integrated circuit |
PCT/US2020/045647 WO2021030282A1 (en) | 2019-08-11 | 2020-08-10 | Dynamically reconfigurable networking using a programmable integrated circuit |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114521254A true CN114521254A (zh) | 2022-05-20 |
Family
ID=72234973
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080049318.2A Pending CN114521254A (zh) | 2019-08-11 | 2020-08-10 | 使用可编程集成电路的可动态重新配置的联网 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10990547B2 (zh) |
EP (1) | EP4010984A1 (zh) |
JP (1) | JP2022544166A (zh) |
KR (1) | KR20220045022A (zh) |
CN (1) | CN114521254A (zh) |
WO (1) | WO2021030282A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11144652B1 (en) * | 2019-12-19 | 2021-10-12 | Xilinx, Inc. | Secure update of programmable integrated circuits in data center computing environments |
US11687279B2 (en) * | 2020-01-27 | 2023-06-27 | Samsung Electronics Co., Ltd. | Latency and throughput centric reconfigurable storage device |
US11651111B2 (en) | 2020-09-25 | 2023-05-16 | Intel Corporation | Enabling secure state-clean during configuration of partial reconfiguration bitstreams on FPGA |
US11295000B1 (en) | 2020-09-28 | 2022-04-05 | Xilinx, Inc. | Static configuration of accelerator card security modes |
US11916552B2 (en) | 2022-03-09 | 2024-02-27 | Xilinx, Inc. | Method for supporting multiple concurrent plugins in a programmable integrated circuit |
US11983133B2 (en) * | 2022-08-22 | 2024-05-14 | Xilinx, Inc. | Adaptive integrated programmable data processing unit |
KR102614429B1 (ko) * | 2023-06-21 | 2023-12-14 | 김호중 | 재설정 가능한 시스템 프레임워크 및 서버시각 동기부를 포함하는 에지 디바이스용 시스템 온 모듈 |
Family Cites Families (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6091263A (en) | 1997-12-12 | 2000-07-18 | Xilinx, Inc. | Rapidly reconfigurable FPGA having a multiple region architecture with reconfiguration caches useable as data RAM |
US6507211B1 (en) | 1999-07-29 | 2003-01-14 | Xilinx, Inc. | Programmable logic device capable of preserving user data during partial or complete reconfiguration |
US6204687B1 (en) | 1999-08-13 | 2001-03-20 | Xilinx, Inc. | Method and structure for configuring FPGAS |
US6526557B1 (en) | 2000-07-25 | 2003-02-25 | Xilinx, Inc. | Architecture and method for partially reconfiguring an FPGA |
US6625794B1 (en) | 2000-11-06 | 2003-09-23 | Xilinx, Inc. | Method and system for safe device reconfiguration |
US7174561B2 (en) | 2001-04-13 | 2007-02-06 | Emc Corporation | MPEG dual-channel decoder data and control protocols for real-time video streaming |
US6836842B1 (en) | 2001-04-24 | 2004-12-28 | Xilinx, Inc. | Method of partial reconfiguration of a PLD in which only updated portions of configuration data are selected for reconfiguring the PLD |
US6462579B1 (en) | 2001-04-26 | 2002-10-08 | Xilinx, Inc. | Partial reconfiguration of a programmable gate array using a bus macro |
US6573748B1 (en) | 2001-11-06 | 2003-06-03 | Xilinx, Inc. | Programmable logic device with output register for specifying memory space during reconfiguration |
US6912602B2 (en) | 2001-11-20 | 2005-06-28 | Broadcom Corporation | System having two or more packet interfaces, a switch, and a shared packet DMA circuit |
US6759869B1 (en) | 2002-06-05 | 2004-07-06 | Xilinx, Inc. | Large crossbar switch implemented in FPGA |
US6810514B1 (en) | 2002-07-03 | 2004-10-26 | Xilinx, Inc. | Controller arrangement for partial reconfiguration of a programmable logic device |
US20040019729A1 (en) | 2002-07-29 | 2004-01-29 | Kelley Richard A. | Buffer management and transaction control for transition bridges |
US6907595B2 (en) * | 2002-12-13 | 2005-06-14 | Xilinx, Inc. | Partial reconfiguration of a programmable logic device using an on-chip processor |
US7124338B1 (en) | 2003-10-10 | 2006-10-17 | Xilinx, Inc. | Methods of testing interconnect lines in programmable logic devices using partial reconfiguration |
US7065623B2 (en) | 2003-11-20 | 2006-06-20 | International Business Machines Corporation | Bandwidth utilization in a PPRC system |
US7191256B2 (en) | 2003-12-19 | 2007-03-13 | Adams Lyle E | Combined host interface controller for conducting communication between a host system and multiple devices in multiple protocols |
US8478921B2 (en) | 2004-03-31 | 2013-07-02 | Silicon Laboratories, Inc. | Communication apparatus implementing time domain isolation with restricted bus access |
US7577707B2 (en) | 2004-04-21 | 2009-08-18 | International Business Machines Corporation | Method, system, and program for executing data transfer requests |
US7233532B2 (en) | 2004-04-30 | 2007-06-19 | Xilinx, Inc. | Reconfiguration port for dynamic reconfiguration-system monitor interface |
US7599299B2 (en) | 2004-04-30 | 2009-10-06 | Xilinx, Inc. | Dynamic reconfiguration of a system monitor (DRPORT) |
US7138820B2 (en) | 2004-04-30 | 2006-11-21 | Xilinx, Inc. | System monitor in a programmable logic device |
US7218137B2 (en) | 2004-04-30 | 2007-05-15 | Xilinx, Inc. | Reconfiguration port for dynamic reconfiguration |
US7109750B2 (en) | 2004-04-30 | 2006-09-19 | Xilinx, Inc. | Reconfiguration port for dynamic reconfiguration-controller |
US8713239B2 (en) | 2004-06-15 | 2014-04-29 | Nxp B.V. | Bus controller for handling split transactions |
US7224184B1 (en) * | 2004-11-05 | 2007-05-29 | Xilinx, Inc. | High bandwidth reconfigurable on-chip network for reconfigurable systems |
TWI298840B (en) | 2005-07-13 | 2008-07-11 | Via Tech Inc | Bus device used in computer system |
US7509617B1 (en) | 2005-09-12 | 2009-03-24 | Xilinx, Inc. | Design methodology to support relocatable bit streams for dynamic partial reconfiguration of FPGAs to reduce bit stream memory requirements |
US7546572B1 (en) | 2005-09-20 | 2009-06-09 | Xilinx, Inc. | Shared memory interface in a programmable logic device using partial reconfiguration |
US7302625B1 (en) | 2005-11-21 | 2007-11-27 | Xilinx, Inc. | Built-in self test (BIST) technology for testing field programmable gate arrays (FPGAs) using partial reconfiguration |
US7477072B1 (en) | 2006-01-17 | 2009-01-13 | Xilinx, Inc. | Circuit for and method of enabling partial reconfiguration of a device having programmable logic |
JP4908017B2 (ja) | 2006-02-28 | 2012-04-04 | 富士通株式会社 | Dmaデータ転送装置及びdmaデータ転送方法 |
US7640527B1 (en) | 2006-06-29 | 2009-12-29 | Xilinx, Inc. | Method and apparatus for partial reconfiguration circuit design for a programmable device |
US7478357B1 (en) | 2006-08-14 | 2009-01-13 | Xilinx, Inc. | Versatile bus interface macro for dynamically reconfigurable designs |
US7724815B1 (en) | 2007-02-27 | 2010-05-25 | Xilinx, Inc. | Method and apparatus for a programmably terminated receiver |
US7983253B2 (en) * | 2007-04-20 | 2011-07-19 | Nuon, Inc. | Time-space carrier sense multiple access |
US7518396B1 (en) | 2007-06-25 | 2009-04-14 | Xilinx, Inc. | Apparatus and method for reconfiguring a programmable logic device |
US7746099B1 (en) | 2008-01-11 | 2010-06-29 | Xilinx, Inc. | Method of and system for implementing a circuit in a device having programmable logic |
US20100030927A1 (en) | 2008-07-29 | 2010-02-04 | Telefonaktiebolaget Lm Ericsson (Publ) | General purpose hardware acceleration via deirect memory access |
US9454368B2 (en) | 2009-01-21 | 2016-09-27 | Vmware, Inc. | Data mover permitting data transfer without transferring data between application and operating system |
US8451281B2 (en) | 2009-06-23 | 2013-05-28 | Intel Corporation | Shared virtual memory between a host and discrete graphics device in a computing system |
US8504373B2 (en) | 2009-07-02 | 2013-08-06 | Nuance Communications, Inc. | Processing verbal feedback and updating digital video recorder (DVR) recording patterns |
US8359448B1 (en) | 2009-07-17 | 2013-01-22 | Xilinx, Inc. | Specific memory controller implemented using reconfiguration |
US8415974B1 (en) | 2011-03-09 | 2013-04-09 | Xilinx, Inc. | Methods and circuits enabling dynamic reconfiguration |
US8707314B2 (en) | 2011-12-16 | 2014-04-22 | Advanced Micro Devices, Inc. | Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations |
US8719750B1 (en) | 2012-11-12 | 2014-05-06 | Xilinx, Inc. | Placement and routing of a circuit design |
US8928351B1 (en) | 2013-03-13 | 2015-01-06 | Xilinx, Inc. | Emulating power domains in an integrated circuit using partial reconfiguration |
EP2858323A1 (en) * | 2013-10-01 | 2015-04-08 | Enyx SA | A method and a device for decoding data streams in reconfigurable platforms |
KR102147993B1 (ko) | 2013-11-14 | 2020-08-25 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 동작 방법 |
US9218443B1 (en) | 2014-11-12 | 2015-12-22 | Xilinx, Inc. | Heterogeneous multiprocessor program compilation targeting programmable integrated circuits |
US9257987B1 (en) | 2015-01-12 | 2016-02-09 | Altera Corporation | Partial reconfiguration using configuration transaction layer packets |
KR20160087224A (ko) | 2015-01-13 | 2016-07-21 | 삼성전자주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
US9722613B1 (en) * | 2015-09-28 | 2017-08-01 | Xilinx, Inc. | Circuit arrangement for and a method of enabling a partial reconfiguration of a circuit implemented in an integrated circuit device |
GB2546343A (en) | 2016-01-15 | 2017-07-19 | Stmicroelectronics (Grenoble2) Sas | Apparatus and methods implementing dispatch mechanisms for offloading executable functions |
US11119835B2 (en) * | 2017-08-30 | 2021-09-14 | Intel Corporation | Technologies for providing efficient reprovisioning in an accelerator device |
US10573598B2 (en) | 2017-09-28 | 2020-02-25 | Xilinx, Inc. | Integration of a programmable device and a processing system in an integrated circuit package |
US11580054B2 (en) | 2018-08-24 | 2023-02-14 | Intel Corporation | Scalable network-on-chip for high-bandwidth memory |
US10447273B1 (en) * | 2018-09-11 | 2019-10-15 | Advanced Micro Devices, Inc. | Dynamic virtualized field-programmable gate array resource control for performance and reliability |
CN112970010A (zh) | 2018-11-09 | 2021-06-15 | 赛灵思公司 | 流式传输平台流和架构 |
US10725942B2 (en) | 2018-11-09 | 2020-07-28 | Xilinx, Inc. | Streaming platform architecture for inter-kernel circuit communication for an integrated circuit |
US10924430B2 (en) | 2018-11-09 | 2021-02-16 | Xilinx, Inc. | Streaming platform flow and architecture for an integrated circuit |
-
2019
- 2019-08-11 US US16/537,605 patent/US10990547B2/en active Active
-
2020
- 2020-08-10 EP EP20761427.2A patent/EP4010984A1/en active Pending
- 2020-08-10 CN CN202080049318.2A patent/CN114521254A/zh active Pending
- 2020-08-10 KR KR1020227008078A patent/KR20220045022A/ko unknown
- 2020-08-10 WO PCT/US2020/045647 patent/WO2021030282A1/en active Application Filing
- 2020-08-10 JP JP2022507696A patent/JP2022544166A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4010984A1 (en) | 2022-06-15 |
JP2022544166A (ja) | 2022-10-17 |
KR20220045022A (ko) | 2022-04-12 |
WO2021030282A1 (en) | 2021-02-18 |
US10990547B2 (en) | 2021-04-27 |
US20210042252A1 (en) | 2021-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10990547B2 (en) | Dynamically reconfigurable networking using a programmable integrated circuit | |
US10778521B2 (en) | Reconfiguring a server including a reconfigurable adapter device | |
CN110520847B (zh) | 控制和状态信号的虚拟化 | |
Tarafdar et al. | Designing for FPGAs in the Cloud | |
US11327918B2 (en) | CPU hot-swapping | |
US10651853B1 (en) | Timing insulation circuitry for partial reconfiguration of programmable integrated circuits | |
CA3167334C (en) | Zero packet loss upgrade of an io device | |
US11055106B1 (en) | Bootstrapping a programmable integrated circuit based network interface card | |
US20230185732A1 (en) | Transparent encryption | |
Al-Aghbari et al. | Cloud-based FPGA custom computing machines for streaming applications | |
US10558440B2 (en) | Tightly integrated accelerator functions | |
Tarafdar et al. | Building the infrastructure for deploying FPGAs in the cloud | |
US11916552B2 (en) | Method for supporting multiple concurrent plugins in a programmable integrated circuit | |
US10776142B1 (en) | Reconfiguring programmable hardware when a virtual machine is active | |
US20220166718A1 (en) | Systems and methods to prevent packet reordering when establishing a flow entry | |
US20220147502A1 (en) | Method to perform hash table lookup for keys wider than data path size | |
Saldana et al. | Using Partial Reconfiguration and Message Passing to Enable FPGA‐Based Generic Computing Platforms | |
Byma | Virtualizing FPGAs for cloud computing applications | |
Khazraee et al. | Shire: Making FPGA-accelerated Middlebox Development More Pleasant | |
US20230259352A1 (en) | Software updates in a network interface device | |
US11606317B1 (en) | Table based multi-function virtualization | |
US20230359801A1 (en) | Deadlock detection and prevention for routing packet-switched nets in electronic systems | |
US20230325536A1 (en) | Power supply unit authentication | |
US20230319133A1 (en) | Network interface device to select a target service and boot an application | |
Tan | Using FPGAs to Simulate Novel Datacenter Network Architectures At Scale |
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 |