CN108319563B - 一种基于fpga的网络功能加速方法和*** - Google Patents
一种基于fpga的网络功能加速方法和*** Download PDFInfo
- Publication number
- CN108319563B CN108319563B CN201810017804.0A CN201810017804A CN108319563B CN 108319563 B CN108319563 B CN 108319563B CN 201810017804 A CN201810017804 A CN 201810017804A CN 108319563 B CN108319563 B CN 108319563B
- Authority
- CN
- China
- Prior art keywords
- acceleration
- fpga
- module
- partial reconfiguration
- reconfiguration region
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus 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
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
-
- 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
- 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
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
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)
- Logic Circuits (AREA)
- Advance Control (AREA)
- Microcomputers (AREA)
Abstract
本发明涉及一种基于FPGA的网络功能加速方法和***,该方法包括:构建一个网络功能加速***,***包括物理机和加速卡,物理机和加速卡通过PCIe通道连接,物理机包括处理器,加速卡中包括FPGA,加速卡用于为处理器提供网络功能加速;处理器被配置为:在需要加速卡提供网络功能加速时,查询FPGA中是否已存在所需的加速模块,如果是,则获取所需的加速模块对应的加速功能ID,如果否,选择FPGA中的至少一个部分重配置区域并将其配置为所需的加速模块并生成对应的加速功能ID;和/或向FPGA加速请求,加速请求包括待处理数据包和加速功能ID;FPGA被配置为:根据加速功能ID将加速请求发送到所需的加速模块进行加速处理。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种基于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.如权利要求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包括:
判断所述***中是否存在满足配置需求的第一类部分重配置区域,如果是,选择所述第一类部分重配置区域中的至少一个进行配置,如果否,判断所述***中是否存在满足配置需求的第二类部分重配置区域,如果是,选择所述第二类部分重配置区域中的至少一个进行配置,如果否,执行加速模块迁移操作,以为待处理数据包提供能够满足配置需求的部分重配置区域;
其中,所述第一类部分重配置区域是未配置的部分重配置区域,所述第二类部分重配置区域是使用频率小于第一阈值和/或最近未使用时长大于第二阈值的已配置的部分重配置区域。
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 CN108319563A (zh) | 2018-07-24 |
CN108319563B true 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) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6911600B2 (ja) * | 2017-07-18 | 2021-07-28 | 富士通株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
CN109240978B (zh) * | 2018-09-21 | 2021-10-22 | 郑州云海信息技术有限公司 | 一种搭建加速平台的fpga***、设备及加速平台 |
CN109491776B (zh) * | 2018-11-06 | 2022-05-31 | 北京百度网讯科技有限公司 | 任务编排方法和*** |
CN109634720B (zh) * | 2018-12-13 | 2021-11-19 | 郑州云海信息技术有限公司 | 一种多虚拟机共享fpga板卡的方法、***及装置 |
US11265172B2 (en) * | 2018-12-21 | 2022-03-01 | Intel Corporation | Methods and apparatus for offloading signature revocation checking on acceleration circuitry |
WO2020140260A1 (en) | 2019-01-04 | 2020-07-09 | Baidu.Com Times Technology (Beijing) Co., Ltd. | Method and system to derive a session key to secure an information exchange channel between a host system and a data processing accelerator |
EP3794771A4 (en) * | 2019-01-04 | 2022-01-05 | Baidu.com Times Technology (Beijing) Co., Ltd. | PROCESS AND SYSTEM FOR DISTRIBUTION AND EXCHANGE OF KEYS FOR DATA PROCESSING ACCELERATORS |
WO2020140267A1 (en) | 2019-01-04 | 2020-07-09 | Baidu.Com Times Technology (Beijing) Co., Ltd. | A data processing accelerator having a local time unit to generate timestamps |
CN112334902A (zh) | 2019-01-04 | 2021-02-05 | 百度时代网络技术(北京)有限公司 | 建立主机***与数据处理加速器之间的安全信息交换信道的方法 |
WO2020140269A1 (en) | 2019-01-04 | 2020-07-09 | Baidu.Com Times Technology (Beijing) Co., Ltd. | Method and system for managing memory of data processing accelerators |
CN112262547B (zh) * | 2019-01-04 | 2023-11-21 | 百度时代网络技术(北京)有限公司 | 具有安全单元以提供根信任服务的数据处理加速器 |
EP3794477B1 (en) | 2019-01-04 | 2023-05-10 | Baidu.com Times Technology (Beijing) Co., Ltd. | Method and system for validating kernel objects to be executed by a data processing accelerator of a host system |
CN112262545B (zh) | 2019-01-04 | 2023-09-15 | 百度时代网络技术(北京)有限公司 | 主机***与数据处理加速器之间的证明协议 |
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 |
US11328075B2 (en) | 2019-01-04 | 2022-05-10 | Baidu Usa Llc | Method and system for providing secure communications between a host system and a data processing accelerator |
US11301407B2 (en) * | 2019-01-08 | 2022-04-12 | Intel Corporation | Technologies for accelerator fabric protocol multipathing |
CN109785224B (zh) * | 2019-01-29 | 2021-09-17 | 华中科技大学 | 一种基于fpga的图数据处理方法和*** |
CN110175107B (zh) * | 2019-05-13 | 2020-07-28 | 华中科技大学 | 一种fpga云服务器性能的测试方法及测试*** |
US20200371843A1 (en) * | 2019-05-25 | 2020-11-26 | Synopsys, Inc. | Framework for application driven exploration and optimization of hardware engines |
CN110287141B (zh) * | 2019-06-27 | 2023-02-03 | 天津津航计算技术研究所 | 一种基于多种接口的fpga重构方法和*** |
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 |
CN111143258B (zh) * | 2019-12-29 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种基于Opencl的***访问FPGA的方法、***、设备以及介质 |
CN111324558B (zh) * | 2020-02-05 | 2021-08-10 | 苏州浪潮智能科技有限公司 | 数据处理方法、装置、分布式数据流编程框架及相关组件 |
US20220321403A1 (en) * | 2021-04-02 | 2022-10-06 | Nokia Solutions And Networks Oy | Programmable network segmentation for multi-tenant fpgas in cloud infrastructures |
US11720425B1 (en) * | 2021-05-20 | 2023-08-08 | Amazon Technologies, Inc. | Multi-tenant radio-based application pipeline processing system |
US11800404B1 (en) * | 2021-05-20 | 2023-10-24 | Amazon Technologies, Inc. | Multi-tenant radio-based application pipeline processing server |
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 |
CN113535745B (zh) * | 2021-08-09 | 2022-01-18 | 威讯柏睿数据科技(北京)有限公司 | 一种层次化数据库操作加速***和方法 |
US11539582B1 (en) | 2021-08-30 | 2022-12-27 | Amazon Technologies, Inc. | Streamlined onboarding of offloading devices for provider network-managed servers |
US11985065B2 (en) | 2022-06-16 | 2024-05-14 | Amazon Technologies, Inc. | Enabling isolated virtual network configuration options for network function accelerators |
US11824943B1 (en) | 2022-06-29 | 2023-11-21 | Amazon Technologies, Inc. | Managed connectivity between cloud service edge locations used for latency-sensitive distributed applications |
CN115277393A (zh) * | 2022-07-26 | 2022-11-01 | 浪潮电子信息产业股份有限公司 | 一种传输配置信息的方法、装置及介质 |
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)
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)
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 | 富士通株式会社 | 情報処理装置、情報処理方法、およびプログラム |
-
2018
- 2018-01-08 CN CN201810017804.0A patent/CN108319563B/zh active Active
- 2018-09-19 US US16/135,598 patent/US10678584B2/en not_active Expired - Fee Related
Patent Citations (6)
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)
Title |
---|
"A PCIe DMA engine to support the virtualization";Jose Fernando Zazo等;《2015 International Conference on ReConFigurable Computing and FPGAs (ReConFig)》;20151209;第1-6页 * |
"Towards Dataflow-based Graph Accelerator";Hai Jin等;《2017 IEEE 37th International Conference on Distributed Computing Systems (ICDCS)》;20170608;第1981-1992页 * |
Also Published As
Publication number | Publication date |
---|---|
US10678584B2 (en) | 2020-06-09 |
US20190213029A1 (en) | 2019-07-11 |
CN108319563A (zh) | 2018-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108319563B (zh) | 一种基于fpga的网络功能加速方法和*** | |
US7965624B2 (en) | Data link fault tolerance | |
US9294354B2 (en) | Using multiple traffic profiles to design a network on chip | |
US20210049146A1 (en) | Reconfigurable distributed processing | |
WO2021155642A1 (zh) | 数据处理方法、装置、分布式数据流编程框架及相关组件 | |
US11204745B2 (en) | Dataflow graph programming environment for a heterogenous processing system | |
US20190266088A1 (en) | Backbone network-on-chip (noc) for field-programmable gate array (fpga) | |
US20110153981A1 (en) | Heterogeneous computer architecture based on partial reconfiguration | |
US20220012177A1 (en) | Application mapping on hardened network-on-chip (noc) of field-programmable gate array (fpga) | |
US20220206766A1 (en) | Control and reconfiguration of data flow graphs on heterogeneous computing platform | |
US20090158276A1 (en) | Dynamic distribution of nodes on a multi-node computer system | |
US10896476B2 (en) | Repository of integration description of hardware intellectual property for NoC construction and SoC integration | |
US10547514B2 (en) | Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation | |
CN115858102A (zh) | 一种用于部署支持虚拟化硬件加速的虚拟机的方法 | |
WO2023020010A1 (zh) | 一种运行进程的方法及相关设备 | |
US9246792B2 (en) | Providing point to point communications among compute nodes in a global combining network of a parallel computer | |
US20170063626A1 (en) | System and method for grouping of network on chip (noc) elements | |
US11979769B2 (en) | Virtualization of transceivers for multi-tenant programmable network-based devices | |
US20240256476A1 (en) | Accessing network chip resources | |
WO2024017285A1 (zh) | Cpu核的分配方法、***、设备和存储介质 | |
US8418129B1 (en) | Method for automatically generating code to define a system of hardware elements | |
Wu et al. | The Design and Implementation of Adaptive Reconfigurable Computing Array | |
WO2017003295A1 (en) | A computing platform system arranged for executing a plurality of processes and a method for handling processes in one of a plurality of connected computing platforms comprised in a computing platform system | |
KR20050040397A (ko) | 시스템 버스 구성 방법 및 시스템 버스 제어기 |
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 |