CN108319563A - 一种基于fpga的网络功能加速方法和系统 - Google Patents

一种基于fpga的网络功能加速方法和系统 Download PDF

Info

Publication number
CN108319563A
CN108319563A CN201810017804.0A CN201810017804A CN108319563A CN 108319563 A CN108319563 A CN 108319563A CN 201810017804 A CN201810017804 A CN 201810017804A CN 108319563 A CN108319563 A CN 108319563A
Authority
CN
China
Prior art keywords
fpga
region
acceleration
reconfigures
accelerating module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810017804.0A
Other languages
English (en)
Other versions
CN108319563B (zh
Inventor
刘方明
金海�
李肖瑶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
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 Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201810017804.0A priority Critical patent/CN108319563B/zh
Publication of CN108319563A publication Critical patent/CN108319563A/zh
Priority to US16/135,598 priority patent/US10678584B2/en
Application granted granted Critical
Publication of CN108319563B publication Critical patent/CN108319563B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • 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
    • 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
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microcomputers (AREA)
  • Advance Control (AREA)
  • Logic Circuits (AREA)

Abstract

本发明涉及一种基于FPGA的网络功能加速方法和系统,该方法包括:构建一个网络功能加速系统,系统包括物理机和加速卡,物理机和加速卡通过PCIe通道连接,物理机包括处理器,加速卡中包括FPGA,加速卡用于为处理器提供网络功能加速;处理器被配置为:在需要加速卡提供网络功能加速时,查询FPGA中是否已存在所需的加速模块,如果是,则获取所需的加速模块对应的加速功能ID,如果否,选择FPGA中的至少一个部分重配置区域并将其配置为所需的加速模块并生成对应的加速功能ID;和/或向FPGA加速请求,加速请求包括待处理数据包和加速功能ID;FPGA被配置为:根据加速功能ID将加速请求发送到所需的加速模块进行加速处理。

Description

一种基于FPGA的网络功能加速方法和系统
技术领域
本发明涉及数据处理领域,尤其涉及一种基于FPGA的网络功能加速方法和系统。
背景技术
随着软件定义网络的发展,为了提高网络数据层面处理的灵活性,在传统的X86服务器上基于软件实现的网络功能处理应用逐步地流行起来。与传统的基于专用硬件实现的网络中间件(MiddleBox)相比,基于软件实现的网络功能拥有灵活性,低成本性,易于部署性等特点。
目前数据中心中的网络带宽已经普遍为10Gbps~40Gbps,有些甚至高达100Gbps。在10Gbps的数据链路上,为了达到最大的吞吐率,在64Byte大小的数据包的情形下,需要67.2ns处理一个数据包。基于软件的网络功能应用依靠CPU对网络数据包进行处理,由于CPU是为通用计算设计的,当进行简单数据包操作时,比如三层包转发时,需要耗费约75个CPU周期(约34ns),此时CPU的计算能力是可以满足的;当进行复杂的数据包操作时,比如数据包加密,则需要大约2300个时钟周期(约950ns),此时则需要多个CPU核心并行工作,才可以达到最大的性能。如果网络链路带宽更大,为40Gbps,甚至100Gbps,所需要的CPU核心数远远超过单台服务器可以承受的范围。
因此,出现了在FPGA(现场可编程门阵列)上实现网络功能的解决方案,FPGA拥有可重配置的特点,可以动态地配置其门阵列的逻辑组合而实现不同的硬件功能,其具有能耗低,性能高的优点。现有技术不能很好地根据利用FPGA的资源,导致实际的资源利用率不高。
发明内容
针对现有技术之不足,本发明提供了一种基于FPGA的网络功能加速方法和系统,有效解决了现有技术中存在的CPU核心占用数过高,吞吐量较低,以及FPGA的实际的资源利用率不高的问题。
本发明提供了一种基于FPGA的网络功能加速方法,所述方法包括:构建一个网络功能加速系统,所述系统包括物理机和加速卡,所述物理机和所述加速卡通过PCIe通道连接,所述物理机包括处理器,所述加速卡中包括FPGA,所述加速卡用于为所述处理器提供网络功能加速;所述处理器被配置为:在需要所述加速卡提供网络功能加速时,查询所述FPGA中是否已存在所需的加速模块,如果是,则获取所述所需的加速模块对应的加速功能ID,如果否,选择FPGA中的至少一个部分重配置区域并将其配置为所需的加速模块并生成对应的加速功能ID;和/或向FPGA发送加速请求,所述加速请求包括待处理数据包和加速功能ID;所述FPGA被配置为:根据所述加速功能ID将所述加速请求发送到所需的加速模块进行加速处理。
根据一个优选实施方式,所述选择FPGA中的至少一个部分重配置区域并将其配置为所需的加速模块并生成对应的加速功能ID包括:判断所述系统中是否存在满足配置需求的第一类部分重配置区域,如果是,选择所述第一类部分重配置区域中的至少一个进行配置,如果否,判断所述系统中是否存在满足配置需求的第二类部分重配置区域,如果是,选择所述第二类部分重配置区域中的至少一个进行配置,如果否,执行加速模块迁移操作,以为待处理数据包提供能够满足配置需求的部分重配置区域;其中,所述第一类部分重配置区域是未配置的部分重配置区域,所述第二类部分重配置区域是使用频率小于第一阈值和/或最近未使用时长大于第二阈值的已配置的部分重配置区域。
根据一个优选实施方式,所述处理器还被配置为:在所述选择所述第一类部分重配置区域中的至少一个进行配置的步骤中,选择所述第一类部分重配置区域中的最小功能块;和/或在所述选择所述第二类部分重配置区域中的至少一个进行配置的步骤中,选择所述第二类部分重配置区域中的最小功能块。
根据一个优选实施方式,所述执行加速模块迁移操作包括:判断是否能通过执行加速模块迁移操作为所需的加速模块提供能够满足配置需求的部分重配置区域,如果是,则将位于初始部分重配置区域的待迁移的加速模块迁移到目标部分重配置区域,如果否,执行部分重配置区域的再划分操作。
根据一个优选实施方式,所述执行部分重配置区域的再划分操作包括:判断是否能执行部分重配置区域的再划分操作为所需的加速模块提供能够满足配置需求的部分重配置区域,如果是,则先将需要被再划分的FPGA上的加速模块迁移到其他FPGA上或者暂时将所述加速请求中的待处理数据包转由物理机处理,然后将所述需要被再划分的FPGA初始化,进行所述初始化之时,所述需要被再划分的FPGA在上电时加载新的框架文件以为所需的加速模块提供能够满足配置需求的部分重配置区域,如果否,则加速请求失败,将所述加速请求中的待处理数据包转由所述物理机处理。
根据一个优选实施方式,所述加速卡中包括具有不同最小划分粒度但实际划分粒度未达到其最小划分粒度的若干待优化FPGA。
根据一个优选实施方式,所述处理器还被配置为:
在系统中所有的部分重配置区域的第一使用率大于第三阈值且第一实际资源利用率小于第四阈值之时,按照最小划分粒度从小到大的顺序对相应的待优化FPGA依次执行实际划分粒度优化操作直到所述第一实际资源利用率大于第五阈值或者直到最后一个待优化FPGA完成实际划分粒度优化操作,其中,所述第四阈值小于等于所述第五阈值。
根据一个优选实施方式,所述实际划分粒度优化操作包括:
判断如果将当前待优化FPGA的实际划分粒度划分为其对应的最小划分粒度后,将其他具有更大实际划分粒度的FPGA上的加速模块按照符合配置要求且对单个部分重配置区的第三资源利用率由大到小的方式迁移到当前待优化FPGA上后是否能使所述当前待优化FPGA的第二使用率大于等于第六阈值且当前待优化FPGA的第二实际资源利用率大于等于第七阈值,如果是,则将当前待优化FPGA划分为其对应的最小划分粒度,如果否,则保持当前待优化FPGA原有的实际划分粒度并按照所述顺序将下一个待优化FPGA作为当前待优化FPGA并重复上一步骤。
本发明还公开了一种基于FPGA的网络功能加速系统,所述系统包括物理机和加速卡,所述物理机和所述加速卡通过PCIe通道连接,所述物理机包括处理器,所述加速卡中包括FPGA,所述加速卡用于为所述处理器提供网络功能加速;所述处理器被配置为:在需要所述加速卡提供网络功能加速时,查询所述FPGA中是否已存在所需的加速模块,如果是,则获取所述所需的加速模块对应的加速功能ID,如果否,选择FPGA中的至少一个部分重配置区域并将其配置为所需的加速模块并生成对应的加速功能ID;和/或向FPGA发送加速请求,所述加速请求包括待处理数据包和加速功能ID;所述FPGA被配置为:根据所述加速功能ID将所述加速请求发送到所需的加速模块进行加速处理。
根据一个优选实施方式,所述选择FPGA中的至少一个部分重配置区域并将其配置为所需的加速模块并生成对应的加速功能ID包括:判断所述系统中是否存在满足配置需求的第一类部分重配置区域,如果是,选择所述第一类部分重配置区域中的至少一个进行配置,如果否,判断所述系统中是否存在满足配置需求的第二类部分重配置区域,如果是,选择所述第二类部分重配置区域中的至少一个进行配置,如果否,执行加速模块迁移操作,以为待处理数据包提供能够满足配置需求的部分重配置区域;其中,所述第一类部分重配置区域是未配置的部分重配置区域,所述第二类部分重配置区域是使用频率小于第一阈值和/或最近未使用时长大于第二阈值的已配置的部分重配置区域。
本发明提供的一种基于FPGA的网络功能加速方法和系统至少具有如下优势:
(1)本发明通过FPGA为物理机的CPU提供加速服务,有效地提高了物理机的数据处理能力和吞吐量,降低了物理机的处理器的核心占用数;
(2)本发明支持FPGA上的加速模块在线重配置,可以在不影响其他加速模块的情况下,对未配置或使用率不高的部分重配置区域进行在线配置。
附图说明
图1是本发明的系统的一个优选实施方式的模块示意图;和
图2是本发明的方法的一个优选实施方式的流程示意图。
附图标记列表
A:物理机 A1:待加速软件程序
A2:网络功能模块 A21:普通处理单元
A22:计算密集单元 A3:加速功能管理模块
B:加速卡 B1:部分重配置区域
B2:加速功能路由模块 B3:内部重配置模块
B4:高速DMA模块
具体实施方式
下面结合附图进行详细说明。
为了便于理解,在可能的情况下,使用相同附图标记来表示各附图中共同的相似元件。
如在整篇本申请中所使用的那样,词语“可以”系容许含义(即,意味着有可能的)而不是强制性含义(即,意味着必须的)。类似地,词语“包括”意味着包括但不限于。
短语“至少一个”、“一个或多个”以及“和/或”系开放式表达,它们涵盖操作中的关联与分离两者。例如,表述“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一起。
术语“一种”或“一个”实体指的是该实体中的一个或多个。这样,术语“一”(或“一”)、“一个或多个”以及“至少一个”在本文中可以交换地使用。还应该注意,术语“包括”、“包含”和“具有”可以交换地使用。
首先对本发明中用到的一些术语进行解释。
物理机是相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境,有时也称为“寄主”或“宿主”。
FPGA,即现场可编程门阵列。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。一个出厂后的成品FPGA的逻辑块和连接可以根据设计需求而改变,使用时可以根据需要通过可编辑的连接把FPGA内部的逻辑门连接起来,以完成所需要的逻辑功能。
网络功能模块,是在物理机上构建的第一虚拟机。网络功能模块可以为相应的程序提供网络功能加速。
加速功能管理模块,是在物理机上构建的第二虚拟机。第二虚拟机可以用于管理加速功能。比如,对第一虚拟机的管理。
实施例1
本实施例公开了一种基于FPGA的网络功能加速方法和系统。在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式可以作为本实施例的补充。
本发明提供了一种基于FPGA的网络功能加速方法,该方法包括:构建一个网络功能加速系统,系统包括物理机A和加速卡B,物理机A和加速卡B通过PCIe通道连接,物理机A包括处理器,加速卡B中包括FPGA,加速卡B用于为处理器提供网络功能加速;处理器被配置为:在需要加速卡提供网络功能加速时,查询FPGA中是否已存在所需的加速模块,如果是,则获取所需的加速模块对应的加速功能ID,如果否,选择FPGA中的至少一个部分重配置区域B1并将其配置为所需的加速模块并生成对应的加速功能ID;和/或向FPGA发送加速请求,加速请求包括待处理数据包和加速功能ID;FPGA被配置为:根据加速功能ID将加速请求发送到所需的加速模块进行加速处理。
根据一个优选实施方式,选择FPGA中的至少一个部分重配置区域B1并将其配置为所需的加速模块并生成对应的加速功能ID包括:判断系统中是否存在满足配置需求的第一类部分重配置区域,如果是,选择第一类部分重配置区域中的至少一个进行配置,如果否,判断系统中是否存在满足配置需求的第二类部分重配置区域,如果是,选择第二类部分重配置区域中的至少一个进行配置,如果否,执行加速模块迁移操作,以为待处理数据包提供能够满足配置需求的部分重配置区域;其中,第一类部分重配置区域是未配置的部分重配置区域,第二类部分重配置区域是使用频率小于第一阈值和/或最近未使用时长大于第二阈值的已配置的部分重配置区域。
根据一个优选实施方式,处理器还被配置为:在选择第一类部分重配置区域中的至少一个进行配置的步骤中,选择第一类部分重配置区域中的最小功能块;和/或在选择第二类部分重配置区域中的至少一个进行配置的步骤中,选择第二类部分重配置区域中的最小功能块。
根据一个优选实施方式,执行加速模块迁移操作包括:判断是否能通过执行加速模块迁移操作为所需的加速模块提供能够满足配置需求的部分重配置区域,如果是,则将位于初始部分重配置区域的待迁移的加速模块迁移到目标部分重配置区域,如果否,执行部分重配置区域的再划分操作。
根据一个优选实施方式,执行部分重配置区域的再划分操作包括:判断是否能执行部分重配置区域的再划分操作为所需的加速模块提供能够满足配置需求的部分重配置区域,如果是,则先将需要被再划分的FPGA上的加速模块迁移到其他FPGA上或者暂时将加速请求中的待处理数据包转由物理机A处理,然后将需要被再划分的FPGA初始化,进行初始化之时,需要被再划分的FPGA在上电时加载新的框架文件以为所需的加速模块提供能够满足配置需求的部分重配置区域,如果否,则加速请求失败,将加速请求中的待处理数据包转由物理机A处理。
根据一个优选实施方式,加速卡B中包括具有不同最小划分粒度但实际划分粒度未达到其最小划分粒度的若干待优化FPGA。
根据一个优选实施方式,处理器还被配置为:在系统中所有的部分重配置区域的第一使用率大于第三阈值且第一实际资源利用率小于第四阈值之时,按照最小划分粒度从小到大的顺序对相应的待优化FPGA依次执行实际划分粒度优化操作直到第一实际资源利用率大于第五阈值或者直到最后一个待优化FPGA完成实际划分粒度优化操作,其中,第四阈值小于等于第五阈值。
根据一个优选实施方式,实际划分粒度优化操作包括:判断如果将当前待优化FPGA的实际划分粒度划分为其对应的最小划分粒度后,将其他具有更大实际划分粒度的FPGA上的加速模块按照符合配置要求且对单个部分重配置区的第三资源利用率由大到小的方式迁移到当前待优化FPGA上后是否能使当前待优化FPGA的第二使用率大于等于第六阈值且当前待优化FPGA的第二实际资源利用率大于等于第七阈值,如果是,则将当前待优化FPGA划分为其对应的最小划分粒度,如果否,则保持当前待优化FPGA原有的实际划分粒度并按照顺序将下一个待优化FPGA作为当前待优化FPGA并重复上一步骤。
本实施例还公开了一种基于FPGA的网络功能加速系统,该系统适于执行本发明记载的各个方法步骤,以达到预期的技术效果。
根据一个优选实施方式,参见图1,该系统包括物理机A和加速卡B,物理机A和加速卡B通过PCIe通道连接,物理机A包括处理器,加速卡B中包括FPGA,加速卡B用于为处理器提供网络功能加速;处理器被配置为:在需要加速卡提供网络功能加速时,查询FPGA中是否已存在所需的加速模块,如果是,则获取所需的加速模块对应的加速功能ID,如果否,选择FPGA中的至少一个部分重配置区域B1并将其配置为所需的加速模块并生成对应的加速功能ID;和/或向FPGA发送加速请求,加速请求包括待处理数据包和加速功能ID;FPGA被配置为:根据加速功能ID将加速请求发送到所需的加速模块进行加速处理。
根据一个优选实施方式,选择FPGA中的至少一个部分重配置区域B1并将其配置为所需的加速模块并生成对应的加速功能ID包括:判断系统中是否存在满足配置需求的第一类部分重配置区域,如果是,选择第一类部分重配置区域中的至少一个进行配置,如果否,判断系统中是否存在满足配置需求的第二类部分重配置区域,如果是,选择第二类部分重配置区域中的至少一个进行配置,如果否,执行加速模块迁移操作,以为待处理数据包提供能够满足配置需求的部分重配置区域;其中,第一类部分重配置区域是未配置的部分重配置区域,第二类部分重配置区域是使用频率小于第一阈值和/或最近未使用时长大于第二阈值的已配置的部分重配置区域。
实施例2
本实施例是对实施例1的进一步改进,重复的内容不再赘述。在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式可以作为本实施例的补充。
根据一个优选实施方式,参见图,2,本发明的方法可以包括:步骤S100,构建一个网络功能加速系统,系统可以包括物理机A和加速卡B,物理机A和加速卡B通过PCIe通道连接,加速卡B中包括FPGA。优选地,物理机A上可以设有加速功能管理模块A3。优选地,加速功能管理模块A3可以是在物理机A上运行的虚拟机。或者,加速功能管理模块A3可以是通过数据接口连接到物理机A上的独立硬件。优选地,网络功能模块A2需要接收来自物理机上待加速软件程序A1的数据包。优选地,物理机例如是服务器、服务器集群、工作站、台式电脑和笔记本电脑中的至少一种。优选地,加速卡中还可以搭载出FPGA外的其他加速模块。比如,GPU、ASIC和GPDSP中的至少一种。优选地,FPGA例如是Xilinx的Virtex 7系列,UltraScale系列和UltraSCALE+系列,以及Altera的Arria系列和Stratix系列中的至少一种。
优选地,本发明的方法还可以包括:步骤S200,在接收到业务配置指令时,物理机A生成网络功能模块A2,网络功能模块A2向加速功能管理模块A3发送注册请求。由于采用了加速功能管理模块A3,支持在同一台物理机A上同时运行多个网络功能模块A2。不同的网络功能模块A2各自拥有独立、互相隔离的数据路径,以此最大化资源利用率和物理机A利用率。优选地,多个网络功能模块A2可以为不同的软件程序和/或进程提供加速服务。优选地,注册请求可以是网络功能模块A2向加速功能管理模块A3发送加速请求之前发出的。这样可以提高后续加速请求的处理速度。这种方式可以在系统中有较多闲置计算资源和通信资源时采用。或者,注册请求可以是网络功能模块A2向加速功能管理模块A3发送加速请求之后发出的。这样可以在需要加速时才执行注册请求,避免产生不必要的通信和计算开销。这种方式可以在系统中的计算资源和通信资源相对紧张时采用。
优选地,本发明的方法还可以包括:步骤S300,注册请求通过后,网络功能模块A2查询FPGA中是否已存在网络功能模块A2所需的加速模块,如果是,则获取所需的加速模块对应的加速功能ID,如果否,加速功能管理模块A3选择FPGA中的至少一个部分重配置区域B1并将其配置为所需的加速模块并生成对应的加速功能ID。
优选地,本发明的方法还可以包括:步骤S400,网络功能模块A2向加速功能管理模块A3发送加速请求,加速请求包括待处理数据包和加速功能ID。
优选地,本发明的方法还可以包括:步骤S500,根据加速功能ID将加速请求发送到所需的加速模块进行加速处理。
优选地,本发明的方法还可以包括:步骤S600,所需的加速模块将处理完毕的数据通过加功能管理模块返回给对应的网络功能模块A2。
根据一个优选实施方式,加速功能管理模块A3选择FPGA中的至少一个部分重配置区域配置所需加速模块的步骤可以包括:
判断系统中是否存在满足配置需求的第一类部分重配置区域,如果是,选择第一类部分重配置区域中的至少一个进行配置,如果否,判断系统中是否存在满足配置需求的第二类部分重配置区域,如果是,选择第二类部分重配置区域中的至少一个进行配置,如果否,执行加速模块迁移操作,以为待处理数据包提供能够满足配置需求的部分重配置区域。优选地,第一类部分重配置区域是未配置的部分重配置区域。优选地,第二类部分重配置区域是使用频率小于第一阈值和/或最近未使用时长大于第二阈值的已配置的部分重配置区域。本发明先判断系统中是否有第一类部分重配置区域,再判断是否有第二类部分重配置区,可以在部分重配置区域的未配置的资源丰富时,保留系统中已配置但久未使用的第二类部分重配置区域,减少下次有程序需要使用第二类部分重配置区域上配置的加速模块时的整体加速时间,从整体上提高本发明的加速效率。优选地,本发明的第二类部分重配置区域是使用频率小于第一阈值或最近未使用时长大于第二阈值的已配置的部分重配置区域。通过该方式,可以选择出使用频率不高或者最近不常使用的已配置的部分重配置区域,这样可以减少将系统中加速任务繁忙的加速模块对应的已配置的部分重配置区域被重配置而导致后期又在其他部分重配置区域重构该加速模块,提高了系统的加速效率。尤其优选地,本发明的第二类部分重配置区域是使用频率小于第一阈值和最近未使用时长大于第二阈值的已配置的部分重配置区域。该方式对第二类部分重配置的选择条件更为苛刻,可以比前一方式更好地减少反复配置的次数,进一步提高系统的加速效率。
根据一个优选实施方式,选择第一类部分重配置区域中的至少一个进行配置的步骤中,选择的是第一类部分重配置区域中的最小功能块。优选地,选择第二类部分重配置区域中的至少一个进行配置的步骤中,选择的是第二类部分重配置区域中的最小功能块。因为第一类部分重配置区域和第二类部分重配置区域可能存在不同大小的功能块,功能块越大,其所包括的逻辑门越多,能够满足更多加速模块的配置需求。因此,在已经满足配置需求的情况下,优先选用最小的功能块,可以提供系统资源的利用率,同时可以极大地减少系统后续的迁移操作和再划分操作,减少通信开销、计算开销和配置时间,提高系统的性能和效率。
根据一个优选实施方式,执行加速模块迁移操作的步骤可以包括:
判断是否能通过执行加速模块迁移操作为网络功能模块A2所需的加速模块提供能够满足配置需求的部分重配置区域,如果是,则将位于初始部分重配置区域的待迁移的加速模块迁移到目标部分重配置区域,如果否,执行部分重配置区域的再划分操作。优选地,在系统中只有一个FPGA时,可以是将一个占用了较大的部分重配置区域的加速模块移动到另一个较小的部分重配置区。然后将较大的部分重配置区域用于配置相应的网络功能模块A2所需的加速模块。优选地,迁移操作可以是在一个FPGA内完成。比如,一个FPGA内划分出了不同大小的部分重配置区域。这样可以优化利用一个FPGA,提高单个FPGA的使用效率。或者,迁移操作也可以是多个FPGA之间的迁移。这样还可以通过迁移操作,将一个FPGA上的加速模块全部迁移到其他FPGA上。本发明先通过判断执行迁移操作是否能够提供能够满足配置需求的部分重配置区域,在迁移操作不能满足配置需求情况下才执行部分重配置区域的再划分操作。因为执行部分重配置区域的再划分操作相比于仅执行迁移操作的实现步骤和牵涉的部件更多,所需要的配置时间、通信开销和计算开销更大。因此,通过这种方式,可以减少系统执行再划分操作的次数,进一步提高系统的效率,降低系统的能耗。
根据一个优选实施方式,执行部分重配置区域的再划分操作的步骤可以包括:判断是否能执行部分重配置区域的再划分操作为网络功能模块A2所需的加速模块提供能够满足配置需求的部分重配置区域,如果是,则先将需要被再划分的FPGA上的加速模块迁移到其他FPGA上或者暂时将加速请求中的待处理数据包转由物理机A处理,然后将需要被再划分的FPGA进行初始化,进行初始化之时,需要被再划分的FPGA在上电时加载新的框架文件以为网络功能模块A2所需的加速模块提供能够满足配置需求的部分重配置区域,如果否,则网络功能模块A2的加速请求失败,将加速请求中的待处理数据包转由物理机A处理。通过该方式,可以在系统中不存在第一和第二类部分重配置区域时,通改变需要被再划分的FPGA的划分方案,在不添加新的FPGA的情况下满足现有的加速需求,提高了系统的资源利用率。优选地,在执行部分重配置区域的再划分操作之前,系统先向用户确认是否对相应的FPGA执行部分重配置区域的再划分操作,如果是,则执行部分重配置区域的再划分操作,如果否,则网络功能模块A2的加速请求失败,将加速请求中的待处理数据包转由物理机A处理。通过该方式,能够在用户对划分方案变更要求严格的情况下由用户确定是否改变相应的FPGA的划分方案,特别是用户知道该相应的FPGA需要在近期执行相应的加速任务时,减少因划分方案的自动变更导致后续用户需要手动调整的可能性,提高用户对划分方案变更的控制权。优选地,FPGA包括静态区域和可重配置区域。FPGA的静态区域可以预先存储至少两个的框架文件。不同的框架文件有不同的划分方案。在该FPGA安装到系统上时,系统可以先读取该FPGA的静态区域里的框架文件并与该FPGA关联的方式进行存储。在需要进行再划分操作之前,系统可以通过所有的框架文件来判断能够通过在划分操作提供满足配置需求的部分重配置区域的FPGA。然后,选择其中一个作为需要被再划分的FPGA并请求和/或设定该FPGA上电时加载相应的新的框架文件。这样可以减少再划分操作中需要的计算开销,降低系统的配置需求和实现难度。或者,可以采取另一个可替代的方式,FPGA安装到系统上时,系统可以先读取该FPGA的静态区域里的与该FPGA的特性参数。特性参数可以包括:该FPGA的支持的最小划分粒度、最小划分粒度对应的区域中的逻辑门的类型和数量、最小划分粒度对应的区域的总数量。系统可以根据厂家提供的划分方案和/或特性参数为相应的FPGA提供上电时需要加载的新的框架文件。
根据一个优选实施方式,加速卡B中包括具有不同最小划分粒度但实际划分粒度未达到其最小划分粒度的若干待优化FPGA。由于FPGA的研发和制造技术在不断地发展,一个用户可能在不同时间段内买了具有不同最小划分粒度的多种规格的FPGA,然后装入到一个系统中。优选地,一个FPGA的实际划分粒度对应的是加载框架文件后划分出的可重配置区域的实际大小。一个FPGA的最小划分粒度对应的是FPGA能够划分出的最小的可重配置区域的大小。
根据一个优选实施方式,本发明的方法还可以包括:当系统中所有的部分重配置区域的第一使用率大于第三阈值且第一实际资源利用率小于第四阈值之时,加速功能管理模块A3按照最小划分粒度从小到大的顺序对相应的待优化FPGA依次执行实际划分粒度优化操作直到第一实际资源利用率大于第五阈值或者直到最后一个待优化FPGA完成实际划分粒度优化操作。优选地,第四阈值小于等于第五阈值。优选地,第一使用率和第一实际资源利用率都是针对系统中所有的部分重配置区域而言。即,包括了系统中存在的所有FPGA的部分重配置区域。优选地,第一使用率是系统中已配置的部分重配置区域的个数与系统中所有部分重配置区域的总个数之比。优选地,第一实际资源利用率可以是系统中已配置的部分重配置区域中实际被用于构成加速模块的逻辑元件的数量与系统中所有的部分重配置区域的逻辑元件的总数量之比。比如,第一实际资源利用率可以是系统中已配置的部分重配置区域中实际被利用的逻辑门的数量与系统中所有的部分重配置区域的逻辑门的总数量之比。但是,如果一个最小划分粒度对应的区域中包括了多个逻辑门,且只有其中一个逻辑门被相应的加速模块利用,由于最小划分粒度对应的区域是整体被划分到部分重配置区域中,所以,这种情况下,该最小划分粒度对应的区域中的其他逻辑门也应该被算作实际被利用的逻辑门。也就是说,第一实际资源利用率可以是系统中已配置的部分重配置区域中实际被利用的最小划分粒度对应的区域的数量与系统中所有的部分重配置区域的最小划分粒度对应的区域的总数量之比。
根据一个优选实施方式,实际划分粒度优化操作可以包括:判断如果将当前待优化FPGA的实际划分粒度划分为其对应的最小划分粒度后,将其他具有更大实际划分粒度的FPGA上的加速模块按照符合配置要求且对单个部分重配置区的第三资源利用率由大到小的方式迁移到当前待优化FPGA上后是否能使当前待优化FPGA的第二使用率大于等于第六阈值且当前待优化FPGA的第二实际资源利用率大于等于第七阈值,如果是,则将当前待优化FPGA划分为其对应的最小划分粒度,如果否,则保持当前待优化FPGA原有的实际划分粒度并按照顺序将下一个待优化FPGA作为当前待优化FPGA并重复上一步骤。因为最小划分粒度越小的FPGA往往是利用了越新的技术和采用了更好硬件资源,其成本也相对较高。但是,这种FPGA被安装到系统上的时间上也是相对越靠后。而如果按照安装时间的顺序来执行实际划分粒度优化操作,不能充分利用这种FPGA的硬件优势。因此,本发明在系统中具有多种最小划分粒度的FPGA时,能够按照最小划分粒度从小到大的顺序充分利用具有较小最小划分粒度的FPGA的硬件优势实现系统资源的利用率。
这里举例进行说明,比如,加速卡B包括第一FPGA和第二FPGA。第一FPGA具有第一最小划分粒度。第二FPGA具有第二最小划分粒度。而且,第一FPGA的第一实际划分粒度没有达到第一最小划分粒度。第二FPGA的第二实际划分粒度没有达到第二最小划分粒度。本例中假设系统内只有这两个待优化FPGA。
此时,则先判断如果将第一FPGA的实际划分粒度划分为第一最小划分粒度后,将其他具有更大实际划分粒度的FPGA上的加速模块按照符合配置要求且对单个部分重配置区的第三资源利用率由大到小的方式迁移到当前待优化FPGA上后是否能使第一FPGA的第二使用率大于等于第六阈值且第一FPGA的第二实际资源利用率大于等于第七阈值,
如果是,则将第一FPGA划分为第一最小划分粒度,
然后判断本次实际划分粒度优化操作完成后第一实际资源利用率是否大于第五阈值,
如果是,结束实际划分粒度优化操作,
如果否,则按照上述步骤继续对第二FPGA执行实际划分粒度优化操作;
如果否,判断如果将第二FPGA的实际划分粒度划分为第二最小划分粒度后,将其他具有更大实际划分粒度的FPGA上的加速模块按照符合配置要求且对单个部分重配置区的第三资源利用率由大到小的方式迁移到第二FPGA上后是否能使第二FPGA的第二使用率大于等于第六阈值且第二FPGA的第二实际资源利用率大于等于第七阈值,
然后判断本次实际划分粒度优化操作完成后第一实际资源利用率是否大于第五阈值,
如果是,结束实际划分粒度优化操作,
如果否,由于第二FPGA是最后一个待优化FPGA,则结束实际划分粒度优化操作。
实施例3
本实施例是对实施例1、2或者其结合的进一步改进,重复的内容不再赘述。在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式可以作为本实施例的补充。
根据一个优选实施方式,本发明的方法还可以包括:加速功能管理模块A3将所需的加速模块与对应的网络功能模块A2建立关联。
根据一个优选实施方式,网络功能模块A2为运行在物理机A上彼此独立的软件程序。例如是,虚拟机。网络功能模块A2可以包括普通处理单元A21和计算密集单元A22。优选地,不同的网络功能模块A2拥有各自独立的普通处理单元A21和计算密集单元A22。普通处理单元A21的待处理数据由物理机A完成计算。计算密集单元A22的待处理数据由硬件处理逻辑完成计算,即FPGA。在FPGA上的加速模块以硬件逻辑电路的形式运行。部分重配置区域为通用处理逻辑,可以被不同的网络功能模块A2所调用。
根据一个优选实施方式,网络功能模块A2可以调用加速模块配置指令,在运行时配置FPGA上的部分重配置区域,使其成为加速模块。优选地,一个网络功能模块A2在调用加速模块配置命令的同时,不会影响另一个网络功能模块A2对已配置的加速模块的加速请求。
实施例4
本实施例是对实施例1、2、3或者其结合的进一步改进,重复的内容不再赘述。在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式可以作为本实施例的补充。
本发明还公开了一种基于FPGA的网络功能加速系统,该系统适于执行本发明记载的各个方法步骤,以达到预期的技术效果。
本发明的系统可以包括物理机A和加速卡B,物理机A和加速卡B通过PCIe通道连接,加速卡B中包括FPGA。
优选地,在接收到业务配置指令时,物理机A生成网络功能模块A2,网络功能模块A2向加速功能管理模块A3发送注册请求。
优选地,注册请求通过后,网络功能模块A2查询FPGA中是否已存在网络功能模块A2所需的加速模块,如果是,则获取所需的加速模块对应的加速功能ID,如果否,加速功能管理模块A3选择FPGA中的至少一个部分重配置区域并将其配置为所需的加速模块并生成对应的加速功能ID。
优选地,网络功能模块A2向加速功能管理模块A3发送加速请求,加速请求包括待处理数据包和加速功能ID。
优选地,根据加速功能ID将加速请求发送到所需的加速模块进行加速处理。
根据一个优选实施方式,加速功能管理模块A3选择FPGA中的至少一个部分重配置区域配置所需加速模块的步骤还可以包括:判断系统中是否存在满足配置需求的第一类部分重配置区域,如果是,选择第一类部分重配置区域中的至少一个进行配置,如果否,判断系统中是否存在满足配置需求的第二类部分重配置区域,如果是,选择第二类部分重配置区域中的至少一个进行配置,如果否,执行加速模块迁移操作,以为待处理数据包提供能够满足配置需求的部分重配置区域;其中,第一类部分重配置区域是未配置的部分重配置区域,第二类部分重配置区域是使用频率小于第一阈值和/或最近未使用时长大于第二阈值的已配置的部分重配置区域。
实施例5
本实施例是对实施例1、2、3、4或者其结合的进一步改进,重复的内容不再赘述。在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式可以作为本实施例的补充。
根据一个优选实施方式,网络功能加速系统包括物理机A和FPGA,物理机A和FPGA通过PCI-e通道连接。优选地,物理机A上运行有多个网络功能模块A2和加速功能管理模块A3。
优选地,FPGA可以用于:在上电时加载FPGA静态配置文件,初始化高速DMA模块B4、内部重配置模块B3、加速功能路由模块B2并使其拥有N个部分重配置区域。其中,高速DMA模块B4、内部重配置模块B3、加速功能路由模块B2为FPGA中静态功能区域。N个部分重配置区域为FPGA中动态配置区域,N为大于或等于1的正整数。在一些文献中,部分重配置区域也可能被称为PR区。
优选地,高速DMA模块B4可以用于数据传输。比如,加速功能管理模块A3向FPGA传输加速模块配置文件、网络功能模块A2需要调用加速功能处理的数据、加速功能管理模块A3读取FPGA的状态信息,以及加速模块处理完毕的数据;加速模块为部分重配置模块经配置后拥有加速功能逻辑的形态;
优选地,内部重配置模块B3可以用于配置部分重配置区域。比如,内部重配置模块B3基于ICAP(internal configuration access port)接口,接收加速功能管理模块A3的配置指令及相关的加速模块配置文件,以配置一个部分重配置区域,以使所选择的部分重配置区域具有数据处理能力,成为加速模块。
优选地,内部重配置模块B3还可以用于:在配置部分重配置区域时,加速功能ID和加速模块的对应关系生成路由表项,加入加速功能路由模块B2。
优选地,加速功能路由模块B2可以用于将待加速处理的数据路由到加速模块。比如,通过查找路由表项,根据DMA高速模块传输到FPGA上的待加速处理的数据中的加速功能ID,将待加速处理的数据路由到加速模块。
优选地,网络功能模块A2可以用于:向加速功能管理模块A3注册,获取一个唯一的网络功能ID,并调用加速功能管理模块A3的加速模块配置API,加载所需的加速模块到FPGA。
优选地,网络功能模块A2还可以用于从所在的物理机A的网卡接收网络数据包,并根据其网络功能进行对应的数据包处理。其中,普通处理单元A21为软件程序代码,可以在物理机A上的通用CPU进行。计算密集单元A22通过发送加速请求,在待加速处理的数据中添加网络功能模块A2ID和加速模块ID,然后调用加速功能管理模块A3提供的加速请求API,将数据传输到FPGA计算。
优选地,加速功能管理模块A3可以用于:管理网络功能模块A2,为每一个注册的网络功能分配唯一的网络功能模块A2ID。
优选地,加速功能管理模块A3还可以用于:接收网络功能模块A2的查询加速模块指令,如果存在查询的加速模块,则返回相应的加速模块ID。
优选地,加速功能管理模块A3还可以用于:接收网络功能模块A2的添加加速模块配置文件指令,向加速模块配置文件添加加速模块配置文件。
优选地,加速功能管理模块A3还可以用于:接收网络功能模块A2的配置指令,通过查找加速模块配置文件数据库,将指定的加速模块配置文件通过高速DMA模块B4传送给内部重配置模块B3,并为已配置加速模块分配一个唯一的加速功能ID。
实施例6
本实施例是对实施例1、2、3、4、5或者其结合的进一步改进,重复的内容不再赘述。在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式可以作为本实施例的补充。
根据一个优选实施方式,加速功能管理模块提供了加速功能管理模块API供网络功能模块配置加速模块和/或调用加速模块。优选的,加速功能管理模块API可以包括配置API和数据传输API。
优选地,配置API可以包括:
网络功能模块注册API(Register),网络功能模块向加速功能管理模块注册;
加速模块查询API(Search_by_name),网络功能模块查询所需的加速模块ID;
加速模块添加API(Add_PR),网络功能模块向加速模块配置文件数据库添加加速模块配置文件;和
加速模块配置API(Load_PR),网络功能模块配置所需的加速模块。
优选地,数据传输API可以包括:
网络功能模块发送数据API(Send_data),网络功能模块向FPGA加速卡传送需要加速模块处理的数据;和
网络功能模块接收数据API(Receive_data),网络功能模块接收FPGA加速卡处理完毕的数据;
需要注意的是,此处只是举例性质地列出了其中一部分API,本领域技术人员可以根据功能需求选择性的添加其他API。
根据一个优先实施方式,网络功能模块在运行具体的网络功能之前,需要调用网络功能注册API向加速模块管理器进行注册,加速模块管理器会返回一个唯一的网络功能ID。
根据一个优先实施方式,网络功能模块在运行具体的网络功能之前,如果需要使用FPGA加速卡中的加速模块,需要先调用加速模块查询API,查询其所需的加速模块是否已经配置在系统中,如果已经配置,则会直接返回所需加速模块ID;如果不存在,则需要调用加速模块配置API,配置所需的加速模块。
根据一个优先实施方式,调用加速模块配置API时,加速模块管理器从多个FPGA加速卡中选择一个未配置的或目前不被使用的部分重配置区域进行配置。具体地,加速功能管理模块查询加速模块配置文件数据库,将所需的加速模块配置文件通过高速DMA模块传送至所选择的FPGA加速卡,并通过内部重配置模块对所选择的部分重配置区域进行配置。
同时,加速功能管理模块在加速功能路由模块中添加对应加速模块的路由表项,以使所述高速DMA模块通过查找所述路由表项将通过PCI-e传输的数据路由到相应的部分重配置区域;所述路由表项是加速功能ID和部分重配置区域映射关系;所述加速功能ID由所述加速功能管理模块生成;
根据一个优先实施方式,网络功能模块可以调用加速模块添加API,向加速模块配置文件数据中添加加速模块配置文件,所述配置文件为预先编译的部分重配置二进制比特文件。
根据一个优先实施方式,在网络功能模块运行时,调用网络功能模块发送数据API,向加速功能管理发送加速请求,所述加速请求为需要加速处理的数据。网络功能模块准备好需要加速处理的数据,并将自己注册时分配的网络功能模块ID和需要的加速功能ID指定在需要加速处理的数据中。
根据一个优先实施方式,加速功能管理模块将网络功能模块加速请求中需要加速处理的数据通过高速DMA模块传送到加速功能ID所对应的FPGA加速卡。
根据一个优先实施方式,加速功能路由模块根据加速请求中指定的加速功能ID,查询路由表项,将数据传送至对应的加速模块。
根据一个优先实施方式,网络功能模块最后通过调用接收数据API,接收FPGA加速卡中加速模块处理完毕的数据。
如本文中所使用的那样,术语“自动的”及其变型是指当执行过程或操作时在没有实质性人工输入的情况下完成的任何过程或操作。然而,如果在执行该过程或操作之前接收到该输入,则该过程或操作可以是自动的,即使该过程或操作的执行使用了实质性或非实质性的人工输入。如果这样的输入影响该过程或操作的执行方式,则该人工输入被认为是实质性的。准予执行该过程或操作的人工输入不被视为“实质性的”。
虽然已经详细描述了本发明,但是在本发明的精神和范围内的修改对于本领域技术人员将是显而易见的。这样的修改也被认为是本公开的一部分。鉴于前面的讨论、本领域的相关知识以及上面结合背景讨论的参考或信息(均通过引用并入本文),进一步的描述被认为是不必要的。此外,应该理解,本发明的各个方面和各个实施例的各部分均可以整体或部分地组合或互换。而且,本领域的普通技术人员将会理解,前面的描述仅仅是作为示例,并不意图限制本发明。
已经出于示例和描述的目的给出了本公开的前述讨论。这并不意图将本公开限制于本文公开的形式。在前述的具体实施方式中,例如,为了简化本公开的目的,本公开的各种特征在一个或多个实施例、配置或方面中被组合在一起。实施例、配置或方面的特征可以以除上面讨论的那些之外的替代实施例、配置或方面组合。本公开的该方法不应被解释为反映本公开需要比每个权利要求中明确记载的更多特征的意图。相反,如以下权利要求所反映的,创造性方面在于少于单个前述公开的实施例、配置或方面的所有特征。因此,以下权利要求由此被并入本具体实施方式中,其中每个权利要求其自身作为本公开的单独实施例。
而且,虽然本公开的描述已经包括对一个或多个实施例、配置或方面以及某些变型和修改的描述,但是其他变型、组合和修改也在本公开的范围内,例如在本领域技术人员的技能和知识范围内,在理解了本公开之后。旨在获得在允许的程度上包括替代实施例、配置或方面的权利,所述权利包括那些要求保护的替代的、可互换的和/或等效的结构、功能、范围或步骤的权利,无论这种替代的、可互换的和/或等效的结构、功能、范围或步骤是否在本文中公开,并且无意公开奉献任何可专利的主题。

Claims (10)

1.一种基于FPGA的网络功能加速方法,其特征在于,所述方法包括:
构建一个网络功能加速系统,所述系统包括物理机(A)和加速卡(B),所述物理机(A)和所述加速卡(B)通过PCIe通道连接,所述物理机(A)包括处理器,所述加速卡(B)中包括FPGA,所述加速卡(B)用于为所述处理器提供网络功能加速;
所述处理器被配置为:
在需要所述加速卡提供网络功能加速时,查询所述FPGA中是否已存在所需的加速模块,如果是,则获取所述所需的加速模块对应的加速功能ID,如果否,选择FPGA中的至少一个部分重配置区域(B1)并将其配置为所需的加速模块并生成对应的加速功能ID;和/或
向FPGA发送加速请求,所述加速请求包括待处理数据包和加速功能ID;
所述FPGA被配置为:
根据所述加速功能ID将所述加速请求发送到所需的加速模块进行加速处理。
2.如权利要求1所述的方法,其特征在于,所述选择FPGA中的至少一个部分重配置区域(B1)并将其配置为所需的加速模块并生成对应的加速功能ID包括:
判断所述系统中是否存在满足配置需求的第一类部分重配置区域,如果是,选择所述第一类部分重配置区域中的至少一个进行配置,如果否,判断所述系统中是否存在满足配置需求的第二类部分重配置区域,如果是,选择所述第二类部分重配置区域中的至少一个进行配置,如果否,执行加速模块迁移操作,以为待处理数据包提供能够满足配置需求的部分重配置区域;
其中,所述第一类部分重配置区域是未配置的部分重配置区域,所述第二类部分重配置区域是使用频率小于第一阈值和/或最近未使用时长大于第二阈值的已配置的部分重配置区域。
3.如权利要求2所述的方法,其特征在于,所述处理器还被配置为:
在所述选择所述第一类部分重配置区域中的至少一个进行配置的步骤中,选择所述第一类部分重配置区域中的最小功能块;和/或
在所述选择所述第二类部分重配置区域中的至少一个进行配置的步骤中,选择所述第二类部分重配置区域中的最小功能块。
4.如权利要求2所述的方法,其特征在于,所述执行加速模块迁移操作包括:
判断是否能通过执行加速模块迁移操作为所需的加速模块提供能够满足配置需求的部分重配置区域,如果是,则将位于初始部分重配置区域的待迁移的加速模块迁移到目标部分重配置区域,如果否,执行部分重配置区域的再划分操作。
5.如权利要求1至4之一所述的方法,其特征在于,
所述执行部分重配置区域的再划分操作包括:
判断是否能执行部分重配置区域的再划分操作为所需的加速模块提供能够满足配置需求的部分重配置区域,如果是,则先将需要被再划分的FPGA上的加速模块迁移到其他FPGA上或者暂时将所述加速请求中的待处理数据包转由物理机(A)处理,然后将所述需要被再划分的FPGA初始化,进行所述初始化之时,所述需要被再划分的FPGA在上电时加载新的框架文件以为所需的加速模块提供能够满足配置需求的部分重配置区域,如果否,则加速请求失败,将所述加速请求中的待处理数据包转由所述物理机(A)处理。
6.如权利要求1至5之一所述的方法,其特征在于,所述加速卡(B)中包括具有不同最小划分粒度但实际划分粒度未达到其最小划分粒度的若干待优化FPGA。
7.如权利要求6所述的方法,其特征在于,所述处理器还被配置为:
在系统中所有的部分重配置区域的第一使用率大于第三阈值且第一实际资源利用率小于第四阈值之时,按照最小划分粒度从小到大的顺序对相应的待优化FPGA依次执行实际划分粒度优化操作直到所述第一实际资源利用率大于第五阈值或者直到最后一个待优化FPGA完成实际划分粒度优化操作,其中,所述第四阈值小于等于所述第五阈值。
8.如权利要求7所述的方法,其特征在于,所述实际划分粒度优化操作包括:
判断如果将当前待优化FPGA的实际划分粒度划分为其对应的最小划分粒度后,将其他具有更大实际划分粒度的FPGA上的加速模块按照符合配置要求且对单个部分重配置区的第三资源利用率由大到小的方式迁移到当前待优化FPGA上后是否能使所述当前待优化FPGA的第二使用率大于等于第六阈值且当前待优化FPGA的第二实际资源利用率大于等于第七阈值,如果是,则将当前待优化FPGA划分为其对应的最小划分粒度,如果否,则保持当前待优化FPGA原有的实际划分粒度并按照所述顺序将下一个待优化FPGA作为当前待优化FPGA并重复上一步骤。
9.一种基于FPGA的网络功能加速系统,其特征在于,所述系统包括物理机(A)和加速卡(B),所述物理机(A)和所述加速卡(B)通过PCIe通道连接,所述物理机(A)包括处理器,所述加速卡(B)中包括FPGA,所述加速卡(B)用于为所述处理器提供网络功能加速;
所述处理器被配置为:
在需要所述加速卡提供网络功能加速时,查询所述FPGA中是否已存在所需的加速模块,如果是,则获取所述所需的加速模块对应的加速功能ID,如果否,选择FPGA中的至少一个部分重配置区域(B1)并将其配置为所需的加速模块并生成对应的加速功能ID;和/或
向FPGA发送加速请求,所述加速请求包括待处理数据包和加速功能ID;
所述FPGA被配置为:
根据所述加速功能ID将所述加速请求发送到所需的加速模块进行加速处理。
10.如权利要求9所述的系统,其特征在于,所述选择FPGA中的至少一个部分重配置区域(B1)并将其配置为所需的加速模块并生成对应的加速功能ID包括:
判断所述系统中是否存在满足配置需求的第一类部分重配置区域,如果是,选择所述第一类部分重配置区域中的至少一个进行配置,如果否,判断所述系统中是否存在满足配置需求的第二类部分重配置区域,如果是,选择所述第二类部分重配置区域中的至少一个进行配置,如果否,执行加速模块迁移操作,以为待处理数据包提供能够满足配置需求的部分重配置区域;
其中,所述第一类部分重配置区域是未配置的部分重配置区域,所述第二类部分重配置区域是使用频率小于第一阈值和/或最近未使用时长大于第二阈值的已配置的部分重配置区域。
CN201810017804.0A 2018-01-08 2018-01-08 一种基于fpga的网络功能加速方法和系统 Active CN108319563B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810017804.0A CN108319563B (zh) 2018-01-08 2018-01-08 一种基于fpga的网络功能加速方法和系统
US16/135,598 US10678584B2 (en) 2018-01-08 2018-09-19 FPGA-based method for network function accelerating and system thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810017804.0A CN108319563B (zh) 2018-01-08 2018-01-08 一种基于fpga的网络功能加速方法和系统

Publications (2)

Publication Number Publication Date
CN108319563A true CN108319563A (zh) 2018-07-24
CN108319563B CN108319563B (zh) 2020-01-03

Family

ID=62894742

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810017804.0A Active CN108319563B (zh) 2018-01-08 2018-01-08 一种基于fpga的网络功能加速方法和系统

Country Status (2)

Country Link
US (1) US10678584B2 (zh)
CN (1) CN108319563B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109240978A (zh) * 2018-09-21 2019-01-18 郑州云海信息技术有限公司 一种搭建加速平台的fpga系统、设备及加速平台
CN109785224A (zh) * 2019-01-29 2019-05-21 华中科技大学 一种基于fpga的图数据处理方法和系统
CN110175107A (zh) * 2019-05-13 2019-08-27 华中科技大学 一种fpga云服务器性能的测试方法及测试系统
CN110287141A (zh) * 2019-06-27 2019-09-27 天津津航计算技术研究所 一种基于多种接口的fpga重构方法和系统
CN111143258A (zh) * 2019-12-29 2020-05-12 苏州浪潮智能科技有限公司 一种基于Opencl的系统访问FPGA的方法、系统、设备以及介质
WO2020119189A1 (zh) * 2018-12-13 2020-06-18 郑州云海信息技术有限公司 一种多虚拟机共享fpga板卡的方法、系统及装置
CN111324558A (zh) * 2020-02-05 2020-06-23 苏州浪潮智能科技有限公司 数据处理方法、装置、分布式数据流编程框架及相关组件
CN113535745A (zh) * 2021-08-09 2021-10-22 威讯柏睿数据科技(北京)有限公司 一种层次化数据库操作加速系统和方法
US20220321403A1 (en) * 2021-04-02 2022-10-06 Nokia Solutions And Networks Oy Programmable network segmentation for multi-tenant fpgas in cloud infrastructures

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6911600B2 (ja) * 2017-07-18 2021-07-28 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム
CN109491776B (zh) * 2018-11-06 2022-05-31 北京百度网讯科技有限公司 任务编排方法和系统
US11693970B2 (en) 2019-01-04 2023-07-04 Baidu Usa Llc Method and system for managing memory of data processing accelerators
CN112262545B (zh) 2019-01-04 2023-09-15 百度时代网络技术(北京)有限公司 主机系统与数据处理加速器之间的证明协议
KR102323763B1 (ko) 2019-01-04 2021-11-08 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 제공하기 위한 방법 및 시스템
US11233652B2 (en) 2019-01-04 2022-01-25 Baidu Usa Llc Method and system to derive a session key to secure an information exchange channel between a host system and a data processing accelerator
EP3794493A4 (en) 2019-01-04 2022-01-12 Baidu.com Times Technology (Beijing) Co., Ltd. METHOD OF ESTABLISHING A SECURE INFORMATION EXCHANGE CHANNEL BETWEEN A HOST SYSTEM AND A DATA PROCESSING ACCELERATOR
CN112262546B (zh) * 2019-01-04 2024-04-23 百度时代网络技术(北京)有限公司 用于数据处理加速器的密钥分配和交换的方法和系统
CN112292678A (zh) 2019-01-04 2021-01-29 百度时代网络技术(北京)有限公司 用于验证将要由主机系统的数据处理加速器执行的内核对象的方法与系统
US11799651B2 (en) * 2019-01-04 2023-10-24 Baidu Usa Llc Data processing accelerator having a security unit to provide root trust services
CN112352242B (zh) 2019-01-04 2024-03-22 百度时代网络技术(北京)有限公司 具有本地时间单元以生成时间戳的数据处理加速器
WO2020140261A1 (en) 2019-01-04 2020-07-09 Baidu.Com Times Technology (Beijing) Co., Ltd. Method and system for protecting data processed by data processing accelerators
US11301407B2 (en) * 2019-01-08 2022-04-12 Intel Corporation Technologies for accelerator fabric protocol multipathing
US20200371843A1 (en) * 2019-05-25 2020-11-26 Synopsys, Inc. Framework for application driven exploration and optimization of hardware engines
CN110597627B (zh) * 2019-08-24 2023-07-14 中国电子科技集团公司第十五研究所 基于虚拟fpga的数据库运算加速装置及加速方法
US11232049B2 (en) * 2019-12-13 2022-01-25 Micron Technology, Inc. Memory module with computation capability
US11800404B1 (en) * 2021-05-20 2023-10-24 Amazon Technologies, Inc. Multi-tenant radio-based application pipeline processing server
US11720425B1 (en) * 2021-05-20 2023-08-08 Amazon Technologies, Inc. Multi-tenant radio-based application pipeline processing system
US11916999B1 (en) 2021-06-30 2024-02-27 Amazon Technologies, Inc. Network traffic management at radio-based application pipeline processing servers
US11356500B1 (en) * 2021-06-30 2022-06-07 Amazon Technologies, Inc. Disaggregated processing of radio-based applications
US11539582B1 (en) 2021-08-30 2022-12-27 Amazon Technologies, Inc. Streamlined onboarding of offloading devices for provider network-managed servers
US11824943B1 (en) 2022-06-29 2023-11-21 Amazon Technologies, Inc. Managed connectivity between cloud service edge locations used for latency-sensitive distributed applications
US11937103B1 (en) 2022-08-17 2024-03-19 Amazon Technologies, Inc. Enhancing availability of radio-based applications using multiple compute instances and virtualized network function accelerators at cloud edge locations
CN116028418B (zh) * 2023-02-13 2023-06-20 中国人民解放军国防科技大学 基于gpdsp的可扩展多核处理器、加速卡及计算机

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754881B2 (en) * 2001-12-10 2004-06-22 International Business Machines Corporation Field programmable network processor and method for customizing a network processor
CN103399758A (zh) * 2011-12-31 2013-11-20 华为数字技术(成都)有限公司 硬件加速方法、装置和系统
CN103403707A (zh) * 2010-12-28 2013-11-20 思杰系统有限公司 用于数据库代理请求交换的系统和方法
CN103765395A (zh) * 2011-08-29 2014-04-30 国际商业机器公司 用于将逻辑地址转换成物理地址的设备和方法
US9100012B1 (en) * 2012-12-14 2015-08-04 Altera Corporation Adaptable programs using partial reconfiguration
CN105306241A (zh) * 2014-07-11 2016-02-03 华为技术有限公司 一种业务部署方法及网络功能加速平台

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10372358B2 (en) * 2015-11-16 2019-08-06 International Business Machines Corporation Access processor
JP2017168957A (ja) * 2016-03-15 2017-09-21 富士通株式会社 情報処理装置、情報処理システム、情報処理プログラム及び情報処理方法
JP6740719B2 (ja) * 2016-06-03 2020-08-19 富士通株式会社 情報処理装置、情報処理方法、およびプログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754881B2 (en) * 2001-12-10 2004-06-22 International Business Machines Corporation Field programmable network processor and method for customizing a network processor
CN103403707A (zh) * 2010-12-28 2013-11-20 思杰系统有限公司 用于数据库代理请求交换的系统和方法
CN103765395A (zh) * 2011-08-29 2014-04-30 国际商业机器公司 用于将逻辑地址转换成物理地址的设备和方法
CN103399758A (zh) * 2011-12-31 2013-11-20 华为数字技术(成都)有限公司 硬件加速方法、装置和系统
US9100012B1 (en) * 2012-12-14 2015-08-04 Altera Corporation Adaptable programs using partial reconfiguration
CN105306241A (zh) * 2014-07-11 2016-02-03 华为技术有限公司 一种业务部署方法及网络功能加速平台

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HAI JIN等: ""Towards Dataflow-based Graph Accelerator"", 《2017 IEEE 37TH INTERNATIONAL CONFERENCE ON DISTRIBUTED COMPUTING SYSTEMS (ICDCS)》 *
JOSE FERNANDO ZAZO等: ""A PCIe DMA engine to support the virtualization"", 《2015 INTERNATIONAL CONFERENCE ON RECONFIGURABLE COMPUTING AND FPGAS (RECONFIG)》 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109240978B (zh) * 2018-09-21 2021-10-22 郑州云海信息技术有限公司 一种搭建加速平台的fpga系统、设备及加速平台
CN109240978A (zh) * 2018-09-21 2019-01-18 郑州云海信息技术有限公司 一种搭建加速平台的fpga系统、设备及加速平台
US11928493B2 (en) 2018-12-13 2024-03-12 Zhengzhou Yunhai Information Technology Co., Ltd. Sharing of FPGA board by multiple virtual machines
WO2020119189A1 (zh) * 2018-12-13 2020-06-18 郑州云海信息技术有限公司 一种多虚拟机共享fpga板卡的方法、系统及装置
CN109785224A (zh) * 2019-01-29 2019-05-21 华中科技大学 一种基于fpga的图数据处理方法和系统
CN110175107A (zh) * 2019-05-13 2019-08-27 华中科技大学 一种fpga云服务器性能的测试方法及测试系统
CN110287141A (zh) * 2019-06-27 2019-09-27 天津津航计算技术研究所 一种基于多种接口的fpga重构方法和系统
CN110287141B (zh) * 2019-06-27 2023-02-03 天津津航计算技术研究所 一种基于多种接口的fpga重构方法和系统
CN111143258A (zh) * 2019-12-29 2020-05-12 苏州浪潮智能科技有限公司 一种基于Opencl的系统访问FPGA的方法、系统、设备以及介质
CN111324558B (zh) * 2020-02-05 2021-08-10 苏州浪潮智能科技有限公司 数据处理方法、装置、分布式数据流编程框架及相关组件
CN111324558A (zh) * 2020-02-05 2020-06-23 苏州浪潮智能科技有限公司 数据处理方法、装置、分布式数据流编程框架及相关组件
US20220321403A1 (en) * 2021-04-02 2022-10-06 Nokia Solutions And Networks Oy Programmable network segmentation for multi-tenant fpgas in cloud infrastructures
CN113535745A (zh) * 2021-08-09 2021-10-22 威讯柏睿数据科技(北京)有限公司 一种层次化数据库操作加速系统和方法
CN113535745B (zh) * 2021-08-09 2022-01-18 威讯柏睿数据科技(北京)有限公司 一种层次化数据库操作加速系统和方法

Also Published As

Publication number Publication date
CN108319563B (zh) 2020-01-03
US10678584B2 (en) 2020-06-09
US20190213029A1 (en) 2019-07-11

Similar Documents

Publication Publication Date Title
CN108319563A (zh) 一种基于fpga的网络功能加速方法和系统
CN111324558B (zh) 数据处理方法、装置、分布式数据流编程框架及相关组件
EP2748993B1 (en) Using transactions to compute and propagate network forwarding state
CN105306241B (zh) 一种业务部署方法及网络功能加速平台
US8434087B2 (en) Distributed acceleration devices management for streams processing
US8368423B2 (en) Heterogeneous computer architecture based on partial reconfiguration
US20190266088A1 (en) Backbone network-on-chip (noc) for field-programmable gate array (fpga)
CN110297670B (zh) 一种提高容器云上分布式任务训练效率的方法及系统
Huang et al. DeePar: A hybrid device-edge-cloud execution framework for mobile deep learning applications
WO2001018977A2 (en) Integrated circuit switch with embedded processor
CN107959582A (zh) 一种切片实例的管理方法及装置
US20190266089A1 (en) Application mapping on hardened network-on-chip (noc) of field-programmable gate array (fpga)
US11342918B2 (en) Network-on-chip (NOC) with flexible data width
CN110308987B (zh) 一种更新容器云上分布式训练任务连接参数的方法
US10547514B2 (en) Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation
CN115858102A (zh) 一种用于部署支持虚拟化硬件加速的虚拟机的方法
CN110392002A (zh) 报文处理方法、装置、设备及可读存储介质
JP5420477B2 (ja) 情報サービスシステム
CN108886476B (zh) 虚拟交换机数据平面和数据平面迁移的多个提供器框架
CN108886493B (zh) 一种具有可插拔流管理协议的基于拓扑结构的虚拟交换模型
WO2024017285A1 (zh) Cpu核的分配方法、系统、设备和存储介质
CN114039894B (zh) 一种基于矢量包的网络性能优化方法、系统、设备、介质
Vanderbauwhede The Gannet service-based SoC: a service-level reconfigurable architecture
EP1700225B1 (en) Multisectional bus in radio base station and method of using such a radio base station
US7363473B2 (en) System for dynamic service provisioning

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