CN106802827A - 用于网络处理器中引擎分配的实现方法 - Google Patents

用于网络处理器中引擎分配的实现方法 Download PDF

Info

Publication number
CN106802827A
CN106802827A CN201611110967.0A CN201611110967A CN106802827A CN 106802827 A CN106802827 A CN 106802827A CN 201611110967 A CN201611110967 A CN 201611110967A CN 106802827 A CN106802827 A CN 106802827A
Authority
CN
China
Prior art keywords
engine
processing unit
network processing
implementation method
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.)
Pending
Application number
CN201611110967.0A
Other languages
English (en)
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.)
No32 Research Institute Of China Electronics Technology Group Corp
Original Assignee
No32 Research Institute Of China Electronics Technology Group Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by No32 Research Institute Of China Electronics Technology Group Corp filed Critical No32 Research Institute Of China Electronics Technology Group Corp
Priority to CN201611110967.0A priority Critical patent/CN106802827A/zh
Publication of CN106802827A publication Critical patent/CN106802827A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种用于网络处理器中引擎分配的实现方法,其包括以下步骤:步骤一:根据当前可用的引擎和前一时刻分配的引擎,选择当前选用的工作引擎,将待处理的数据传递到该引擎中;步骤二:实现多个相同的工作引擎,并行执行具体功能;步骤三:保存处理结果供后级取用,释放占用的引擎,将空闲寄存器对应位清零。本发明支持通过寄存器灵活配置实际工作的引擎数目,根据具体应用需求配置引擎数目、平衡资源和速度,实现性能最优;只要有一个以上空闲引擎,就可以接收数据,释放前级模块资源,隐藏模块之间数据传输和处理的时间,提高工作效率;后续引擎数目的扩展方便,只需要简单改动。

Description

用于网络处理器中引擎分配的实现方法
技术领域
本发明涉及一种网络通信领域技术,特别是涉及一种用于网络处理器中引擎分配的实现方法。
背景技术
网络处理器是经过专门设计和高度优化来实现网络功能的可编程硬件,用于完成报文处理、协议分析、路由转发等通信工作。网络处理器拥有高性能和可编程的优点,支持不断涌现的网络技术。
图1是现有网络处理器的核心组成部分。网络处理器包括数据包解析模块、查找模块、更新转发模块和数据包修改四种模块。每种模块完成不同的任务。其中,数据包解析模块从帧存储器读出帧数据,分类解析后识别并提取关键信息,对信息进行组合构成多个查找关键字。查找模块接收来自查找关键字,对相关表进行查找和管理。更新转发模块根据查找结果决定帧的输出端口、输出队列。数据包修改模块从帧存储器中读出帧,根据需要修改内容后写回帧存储器。
每种模块都可以简单分为三个步骤:分配引擎并接收待处理数据、执行具体功能、保存处理结果传递给后级模块。模块之间需要用较多时间来传输数据。如果每种模块只有一个工作引擎,那么模块之间必须串行工作,处理速度非常慢。因此,每种模块均采用多个工作引擎执行相同的具体功能,并行处理数据,隐藏传输和处理的时间,如图2所示。
传统方法是通过状态机的形式来实现多个引擎的分配,每个周期只有一个引擎有优先权,如果该引擎没有空闲,则它下一个空闲的引擎可以被分配。这种方法只适合在较少引擎数目的场合运用。随着引擎数目的增加,状态机会变得异常复杂,难于管理且不易扩展。
发明内容
本发明所要解决的技术问题是提供一种用于网络处理器中引擎分配的实现方法,其能够快速分配引擎资源,及时接受前级模块传来的数据,避免长时间占用模块,影响数据帧线性收发;不同应用场合灵活选择工作引擎的数目,便于选择处理速度和资源占用的最优情况;后续扩展引擎数目灵活方便,改动小。
本发明是通过下述技术方案来解决上述技术问题的:一种用于网络处理器中引擎分配的实现方法,其特征在于,所述用于网络处理器中引擎分配的实现方法包括以下步骤:
步骤一:根据当前可用的引擎和前一时刻分配的引擎,选择当前选用的工作引擎,将待处理的数据传递到该引擎中;
步骤二:实现多个相同的工作引擎,并行执行具体功能;
步骤三:保存处理结果供后级取用,释放占用的引擎,将空闲寄存器对应位清零。
优选地,所述用于网络处理器中引擎分配的实现方法涉及网络处理器,网络处理器包括解析模块、查找模块、更新转发模块、修改模块,且解析模块、查找模块、更新转发模块、修改模块均支持多个相同、独立的执行单元。
优选地,所述步骤一提供寄存器接口、供软件人员配置引擎数目。
优选地,所述步骤二隐藏数据传输时间,加快数据处理速度。
优选地,所述空闲寄存器反映当前空闲的引擎情况,由模块内部进行维护。
本发明的积极进步效果在于:本发明支持通过寄存器灵活配置实际工作的引擎数目,根据具体应用需求配置引擎数目、平衡资源和速度,实现性能最优;只要有一个以上空闲引擎,就可以接收数据,释放前级模块资源,隐藏模块之间数据传输和处理的时间,提高工作效率;后续引擎数目的扩展方便,只需要简单改动。
附图说明
图1为现有网络处理器的核心处理模块结构图。
图2为现有网络处理器中每种模块处理数据流程图。
图3为本发明用于网络处理器中引擎分配的实现方法的流程图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。
本发明也涉及网络处理器,网络处理器包括解析模块、查找模块、更新转发模块、修改模块,且四个模块均支持多个相同、独立的执行单元,即工作引擎。
如图3所示,本发明用于网络处理器中引擎分配的实现方法包括以下步骤:
步骤301:根据当前可用的引擎和前一时刻分配的引擎,选择当前选用的工作引擎,将待处理的数据传递到该引擎中;
步骤302:实现多个相同的工作引擎,并行执行具体功能,如解析、查找、更新转发或修改;
步骤303:保存处理结果供后级取用,释放占用的引擎,将FREE寄存器(空闲寄存器)对应位清零。
其中,步骤301提供寄存器接口、供软件人员配置引擎数目。
步骤302隐藏数据传输时间,加快数据处理速度,这样能尽早释放前级模块资源,保证帧的线性收发。
其中,寄存器包括ENABLE寄存器、FREE寄存器(空闲寄存器)、AVALABLE寄存器、SELECT寄存器。上述三个步骤流水执行,隐藏了数据传输和处理的时间,大大提高性能。同时,引擎分配部分实现十分简单,改动极其方便,方便后续扩展。
FREE寄存器反映当前空闲的引擎情况,由模块内部进行维护。在分配引擎后,将FREE寄存器的对应位置1。ENABLE寄存器和FREE寄存器按位与后得到AVAILABLE寄存器,也就是当前实际能使用的引擎情况。基于AVAILABLE寄存器和SELECT寄存器,采用仲裁逻辑(具体实现方式可以不同)得到新的SELECT寄存器值,并将前级传来的待处理数据传递给相应的引擎。传递结束后,释放前级模块资源。只要有一个或一个以上的空闲引擎,就可以继续传递和处理后续数据。某个引擎处理完数据后,会将数据传递给步骤303。此时,释放该引擎,并将FREE寄存器中对应位置1。
以下介绍各个寄存器:
ENABLE(使能)寄存器:当前使能的引擎情况。如bit0=1表示引擎0使能,0表示不使能。以此类推。根据支持的工作引擎数目来配置。如只允许一个引擎工作,那么ENABLE=‘b1;允许2个引擎工作,ENABLE=‘b11,以此类推;
FREE(空闲)寄存器:当前空闲的引擎情况。表示当前各引擎的空闲情况。bit0=1表示引擎0空闲,0表示忙碌。以此类推;
AVAILABLE(可用)寄存器:当前可用的引擎情况。可能有多位为1。由ENABLE寄存器和FREE寄存器按位与得到;
SELECT(选择)寄存器:当前实际选用的引擎情况,某时刻有且仅有1位为1。如Bit0=1表示选用引擎0,以此类推;根据当前SELECT的值和AVALIABLE的值,得到SELECT的新值,也就是由前一时刻选用的引擎和当前可用的引擎情况,得到当前可选用的引擎;
这四个寄存器的位宽可以和当前支持的引擎数目相同,但是,考虑到后续会增加引擎数目,所以将这些寄存器的位宽加大,超过当前支持的引擎数目。
举个例子,当前支持四个引擎,可以将上述寄存器的位宽定为8,此时只要将ENABLE寄存器设成8’b0000_1111。后续如果增加四个引擎,只要将ENABLE寄存器改成8’b1111_1111;如果减少四个引擎,只要将ENABLE寄存器改成8’b0000_1111。其他情况以此类推。表1列出当前支持的引擎数目和ENABLE寄存器的对应值,可以根据需要灵活配置引擎数目,改动很小。
表1
既支持只有一个引擎工作,方便硬件调试定位错误;也支持多个引擎并行工作,隐藏数据传输时间,提高工作效率。在具体应用中,根据实际情况灵活配置引擎数目,比较资源占用和处理速度,选择最优的情况。
某个时刻选择的引擎由前一时刻选择的引擎和当前可用的引擎来共同决定。
初始时刻,ENABLE为全1,FREE为全1,那么AVALIABLE也为全1,所有引擎均可用。一旦前级模块有数据准备好,SELECT仅bit0为1,立即分配到引擎0中处理,将FREE[0]清零。如果前级模块有数据准备好,此时SELECT仅bit1为1,将立即分配到引擎1中处理,将FREE[1]清零。当引擎0工作完成将结果保存好后,释放引擎0,将FREE[0]置1。以此类推,一旦前级模块准备好数据,从可用引擎中选择一个引擎,立即将数据传递到这个引擎中,释放前一级模块资源。
本发明均支持多个相同、独立的执行单元,即工作引擎,执行具体功能,对数据进行并行处理,隐藏模块之间数据的传输时间,加快处理速度,提高工作效率。只要有一个或一个以上的空闲引擎,就允许接收数据,这样能尽快释放前级模块资源,保证帧的线性收发。提供寄存器接口灵活配置工作引擎的数目。支持单引擎模式,即只有一个引擎工作,方便硬件调试定位错误;支持多个引擎并行工作,隐藏传输和处理时间,提高工作效率。在具体应用中,根据实际情况配置引擎数目,平衡资源和速度两者关系,实现性能的最优。监控所有引擎的空闲/忙碌状态,在前一次分配的引擎的基础上,选用一个可用引擎,将前级模块的数据保存到该引擎对应的寄存器中,尽快释放前级模块的资源,保证数据包的线性收发。
综上所述,本发明支持通过寄存器灵活配置实际工作的引擎数目,根据具体应用需求配置引擎数目、平衡资源和速度,实现性能最优;只要有一个以上空闲引擎,就可以接收数据,释放前级模块资源,隐藏模块之间数据传输和处理的时间,提高工作效率;后续引擎数目的扩展方便,只需要简单改动。本发明支持软件根据具体应用灵活配置工作引擎的数目,便于选择处理速度和资源占用的最优情况。
本发明支持灵活配置工作引擎的数目,根据具体应用需求选择合适的引擎数目,平衡资源占用和处理速度。既支持单个引擎工作,便于硬件调试;也支持多个工作引擎并行处理数据,隐藏数据传输的时间。只要有一个或一个以上空闲的引擎就可以接收前一级模块传来的数据,尽快释放前一级模块资源,保证帧的线性收发。本发明对引擎分配的结构进行优化,仅用4个寄存器和简单的仲裁逻辑,实现从当前可用的引擎中选择一个,接收前级模块的数据,加快处理速度,提高资源利用率,实现性能的最优。
以上所述的具体实施例,对本发明的解决的技术问题、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种用于网络处理器中引擎分配的实现方法,其特征在于,所述用于网络处理器中引擎分配的实现方法包括以下步骤:
步骤一:根据当前可用的引擎和前一时刻分配的引擎,选择当前选用的工作引擎,将待处理的数据传递到该引擎中;
步骤二:实现多个相同的工作引擎,并行执行具体功能;
步骤三:保存处理结果供后级取用,释放占用的引擎,将空闲寄存器对应位清零。
2.根据权利要求1所述的用于网络处理器中引擎分配的实现方法,其特征在于,所述用于网络处理器中引擎分配的实现方法涉及网络处理器,网络处理器包括解析模块、查找模块、更新转发模块、修改模块,且解析模块、查找模块、更新转发模块、修改模块均支持多个相同、独立的执行单元。
3.根据权利要求1所述的用于网络处理器中引擎分配的实现方法,其特征在于,所述步骤一提供寄存器接口、供软件人员配置引擎数目。
4.根据权利要求1所述的用于网络处理器中引擎分配的实现方法,其特征在于,所述步骤二隐藏数据传输时间,加快数据处理速度。
5.根据权利要求1所述的用于网络处理器中引擎分配的实现方法,其特征在于,所述空闲寄存器反映当前空闲的引擎情况,由模块内部进行维护。
CN201611110967.0A 2016-12-06 2016-12-06 用于网络处理器中引擎分配的实现方法 Pending CN106802827A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611110967.0A CN106802827A (zh) 2016-12-06 2016-12-06 用于网络处理器中引擎分配的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611110967.0A CN106802827A (zh) 2016-12-06 2016-12-06 用于网络处理器中引擎分配的实现方法

Publications (1)

Publication Number Publication Date
CN106802827A true CN106802827A (zh) 2017-06-06

Family

ID=58984084

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611110967.0A Pending CN106802827A (zh) 2016-12-06 2016-12-06 用于网络处理器中引擎分配的实现方法

Country Status (1)

Country Link
CN (1) CN106802827A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667560A (zh) * 2020-12-22 2021-04-16 深圳致星科技有限公司 基于fpga的数据分发装置和计算平台

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1885822A (zh) * 2005-06-25 2006-12-27 华为技术有限公司 一种网络处理器
CN104301228A (zh) * 2014-09-12 2015-01-21 中国电子科技集团公司第三十二研究所 网络处理器中查找模块的实现方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1885822A (zh) * 2005-06-25 2006-12-27 华为技术有限公司 一种网络处理器
CN104301228A (zh) * 2014-09-12 2015-01-21 中国电子科技集团公司第三十二研究所 网络处理器中查找模块的实现方法及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667560A (zh) * 2020-12-22 2021-04-16 深圳致星科技有限公司 基于fpga的数据分发装置和计算平台

Similar Documents

Publication Publication Date Title
CN102752198B (zh) 多核报文转发方法、多核处理器及网络设备
US8995449B2 (en) Lookup cluster complex
US7565343B2 (en) Search apparatus and search management method for fixed-length data
CN101296114B (zh) 基于流的并行模式匹配方法和系统
CN104050041B (zh) 用于在处理器中调度规则匹配的调度方法和装置
US9531723B2 (en) Phased bucket pre-fetch in a network processor
CN103368851B (zh) 基于资源复用的Openflow流表存储优化方法
CN104135437B (zh) 用于在网络交换机中利用集中式存储器池的表搜索的装置和方法
CN100407701C (zh) 一种网络处理器
CN103309738B (zh) 用户作业调度方法及装置
CN110995598B (zh) 一种变长报文数据处理方法和调度装置
CN103970829A (zh) 用于tcam共享的架构
CN103425725A (zh) 散列冲突降低系统
CN107122222B (zh) 一种字符串的搜索系统及方法
CN108875064A (zh) 基于FPGA的OpenFlow多维数据匹配查找方法
CN105183698A (zh) 一种基于多核dsp的控制处理系统和方法
CN104317549A (zh) 一种实现数据排序的级联结构电路和方法
CN101242362A (zh) 查找键值生成装置及方法
CN103475584A (zh) 三态内容寻址存储器(tcam)查询方法和装置
CN104615684A (zh) 一种海量数据通信并发处理方法及系统
CN105812164B (zh) 基于tcam多级流表的规则索引管理实现方法和装置
CN111277612A (zh) 一种网络报文处理策略生成方法、系统及介质
CN108762810B (zh) 一种基于并行微引擎的网络报文头处理器
CN105553646B (zh) 面向分组密码算法并行计算的可重构s盒电路结构
CN104142977B (zh) 采用检索表确定多数据源优先级的存储方法

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170606