CN105075204A - 可配置的多核网络处理器 - Google Patents

可配置的多核网络处理器 Download PDF

Info

Publication number
CN105075204A
CN105075204A CN201480013074.7A CN201480013074A CN105075204A CN 105075204 A CN105075204 A CN 105075204A CN 201480013074 A CN201480013074 A CN 201480013074A CN 105075204 A CN105075204 A CN 105075204A
Authority
CN
China
Prior art keywords
process core
pipeline processes
processing unit
network processing
parallel processing
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
CN201480013074.7A
Other languages
English (en)
Other versions
CN105075204B (zh
Inventor
Y·图
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN105075204A publication Critical patent/CN105075204A/zh
Application granted granted Critical
Publication of CN105075204B publication Critical patent/CN105075204B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1515Non-blocking multistage, e.g. Clos
    • H04L49/1546Non-blocking multistage, e.g. Clos using pipelined operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Abstract

一种网络处理器包括配置成处理数据分组的多个处理核,以及可配置成在流水线处理模式与并行处理模式之间配置这些处理核的处理模式机构。处理模式机构可以包括可被配置成互连处理核以在流水线处理模式或者并行处理模式中操作的开关元件、或者结构逻辑和总线。

Description

可配置的多核网络处理器
相关申请的交叉引用
本申请要求于2013年3月12日提交的题为“CONFIGURABLEMULTICORENETWORKPROCESSOR(可配置的多核网络处理器)”的美国非临时申请S/N.13/797,838的优先权,其通过援引全部明确纳入于此。
背景
领域
本公开一般涉及电子电路,并且尤其涉及具有可在流水线处理模式与并行处理模式之间配置的多个处理核的网络处理器。
背景技术
分组交换网络被广泛用于在个体和组织之间传送信息。在分组交换网络中,在共用信道上传送小型信息块或者数据分组。更具体地,信息在源头被分段成多个数据分组并且使用地址方案在信道上被路由至目的地。在目的地处,从这些分组重构信息。
网络上的许多设备包括被设计成处理数据分组的网络处理器。网络处理器是可以采用多个处理核的软件可编程设备。处理核可以是并行地专用的,以使得由网络处理器接收的每个数据分组被指派给对该数据分组执行所有必需的处理的处理核。替换地,处理核可以是以流水线方式专用的,其中流水线中的每个处理核专用于运行针对数据分组的特定子任务。在联网应用中,每种配置具有其自己的优点和缺点。例如,层2和层3网络协议良好地适于流水线处理,但是较高层协议(例如,深度分组检验(DPI))较好地适于并行处理。因此,在本领域中存在对高效地支持所有网络协议(例如,所有层网络协议)的单个解决方案的需要。
概述
公开了一种网络处理器。该网络处理器包括配置成处理数据分组的多个处理核,以及可配置成在流水线处理模式与并行处理模式之间配置处理核的处理模式机构。网络处理器还可以包括随处理核布置的多个先入先出(FIFO)接口。处理模式机构被配置成将FIFO接口与处理核互连以在流水线处理模式或者并行处理模式中操作。处理模式机构可以包括多个开关元件(例如,开关、多路复用器等),这多个开关元件可被配置成互连处理核以在流水线处理模式或者并行处理模式中操作。处理模式机构还可以包括可被配置成互连处理核以在流水线处理模式或者并行处理模式中操作的结构逻辑和总线。
公开了另一种网络处理器。该网络处理器包括用于处理数据分组的装置,以及用于在流水线处理模式与并行处理模式之间配置该用于处理的装置的装置。网络处理器可以进一步包括随该用于处理的装置布置的多个FIFO接口。该用于配置的装置被配置成将FIFO接口与该用于处理的装置互连以在流水线处理模式或者并行处理模式中操作。该用于处理的装置可以包括多个处理核,以及该用于配置的装置可以包括可被配置成互连处理核以在流水线处理模式或者并行处理模式中操作的多个开关元件、或者结构逻辑和总线。
公开了一种用于处理数据分组的方法。该方法包括在所选处理模式中配置多个处理核,该所选处理模式是流水线处理模式和并行处理模式中的一者。该方法还包括根据所选处理模式来将数据分组分发给该多个处理核,以及根据所配置的处理模式从该多个处理核中的一个或多个处理核接收一个或多个数据分组。配置该多个处理核可以包括将多个开关元件配置成互连处理核以在流水线处理模式或并行处理模式中操作,或者将结构逻辑和总线配置成互连处理核以在流水线处理模式或并行处理模式中操作。
公开了一种计算机程序产品。该计算机程序产品包括计算机可读介质,该计算机可读介质包括可由网络处理器执行的代码。网络处理器包括多个处理核和处理模式机构。该代码在网络处理器中执行时使该网络处理器在所选处理模式中配置多个处理核。所选处理模式可以是流水线处理模式和并行处理模式中的一者。该代码还使网络处理器根据所选处理模式来将数据分组分发给该多个处理核,以及根据所配置的处理模式从该多个处理核中的一个或多个处理核接收一个或多个数据分组。
公开了另一种网络处理器。该网络处理器包括配置成处理数据分组的多个处理核,其中这些处理核可在流水线处理模式与并行处理模式之间配置。该网络处理器可以包括配置成互连处理核以在流水线处理模式或者并行处理模式中操作的多个开关。该网络处理器可以包括存储器以及用于向处理核提供对存储器的访问的存储器总线,其中该存储器总线互连处理核以在流水线处理模式或者并行处理模式中操作。
应理解,根据以下详细描述,装置和方法的其他方面对于本领域技术人员而言将变得容易明白,其中以解说方式示出和描述了装置和方法的各个方面。如将认识到的,这些方面可以按其他和不同的形式来实现并且其若干细节能够在各个其他方面进行修改。相应地,附图和详细描述应被认为在本质上是解说性的而非限制性的。
附图简述
现在将参照附图作为示例而非限定地在详细描述中给出装置和方法的各个方面,其中:
图1是解说电信系统的示例的概念框图。
图2是可配置的多核网络处理器的框图。
图3是处于流水线处理模式中的可配置的多核网络处理器的框图。
图4是处于并行处理模式中的可配置的多核网络处理器的框图。
图5是用于在流水线处理模式与并行处理模式之间配置多核网络处理器的处理模式机构的框图。
图6是用于在流水线处理模式与并行处理模式之间配置多核网络处理器的另一处理模式机构的框图。
图7是用于使用可在流水线处理模式与并行处理模式之间配置的多核网络处理器来处理数据分组的方法的流程图。
详细描述
以下将参照附图更全面地描述本公开的各个方面。然而,本公开可由本领域技术人员用许多不同形式来实施并且不应解释为被限定于本文给出的任何具体结构或功能。确切而言,提供这些方面以使得本公开将是透彻和完整的,并且其将向本领域技术人员完全传达本公开的范围。基于本文中的教导,本领域技术人员应领会,本公开的范围旨在覆盖本公开的任何方面,不论其是独立实现的还是与本公开的任何其他方面组合实现的。例如,可以使用本文所阐述的任何数目的方面来实现装置或实践方法。另外,本公开的范围旨在覆盖使用除了本公开的其他方面之外的或者取代本公开的其他方面的其他结构和/或功能性来实践的此类装置或方法。应当理解,本文中所披露的本公开的任何方面可由权利要求的一个或多个元素来实施。
尽管本文将描述特定方面,但这些方面的众多变体和置换落在本公开的范围之内。尽管提到了优选方面的一些益处和优点,但本公开的范围并非旨在被限定于特定益处、用途或目标。确切而言,本公开的各方面旨在宽泛地应用于不同的电路、技术、系统、网络和方法,其中的一些作为示例在附图和以下描述中解说。详细描述和附图仅仅解说本公开而非限定本公开,本公开的范围由所附权利要求及其等效技术方案来定义。
以下将参照附图更全面地描述各种概念。然而,这些概念可由本领域技术人员用许多不同形式来实施并且不应解释为被限定于本文给出的任何具体结构或功能。确切而言,提供这些概念是为了使得本公开将是透彻和完整的,并且其将向本领域技术人员完全传达这些概念的范围。详细描述可以包括具体细节。然而,对于本领域技术人员将显而易见的是,没有这些具体细节也可实践这些概念。在一些实例中,众所周知的结构和组件以框图形式示出以避免湮没本公开通篇所给出的各种概念。
本公开中通篇给出的各种概念良好地适于实现在网络元件中。网络元件(例如,路由器、交换机、桥接器、或类似的联网设备)包括通信地互连网络上的其他装备(例如,其他网络元件、终端站、或类似联网设备)的任何联网装备。
这些概念可以在硬件中或者在硬件平台上执行的软件中实现。硬件或硬件平台可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑组件、分立的门或晶体管逻辑、分立的硬件组件、或其任何组合、或者被设计成执行本文描述的功能的任何其他合适的组件。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算组件的组合,例如DSP与微处理器的组合、多个微处理器、与DSP协同的一个或多个微处理器、或任何其他此类配置。
软件应当被宽泛地解释成意为指令、指令集、代码、代码段、程序代码、程序、子程序、软件模块、应用、软件应用、软件包、例程、子例程、对象、可执行件、执行的线程、规程、函数等,无论其是用软件、固件、中间件、微代码、硬件描述语言、还是其他术语来述及皆是如此。软件可驻留在计算机可读介质上。作为示例,计算机可读介质可包括:磁存储设备(例如,硬盘、软盘、磁条)、光盘(例如,压缩盘(CD)、数字多用盘(DVD))、智能卡、闪存设备(例如,记忆卡、记忆棒、钥匙驱动器)、随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、可擦式PROM(EPROM)、电可擦式PROM(EEPROM)、通用寄存器、或者任何其他合适的用于存储软件的非瞬态介质。
本公开涉及具有多个处理核的网络处理器,该多个处理核可以在流水线处理模式与并行处理模式之间配置。在流水线处理模式中,用于数据分组的软件操作被划分成多个软件操作或子任务,其中每个子任务在单独的处理核上运行。由任何一个处理核获得的对数据分组的中间处理可以在下一级流水线处理中传递。在并行处理模式中,每个数据分组被指派给一处理核。每个处理核运行相同的软件并且处理数据分组直至完成。
图1是解说基于分组的网络100的示例的概念框图。网络100使用一个或多个网络处理器104来互连多个网络设备102(例如,计算机)。网络100可以是广域网(WAN)(诸如因特网)、局域网(LAN)(诸如以太网)、或者任何其他合适的网络。基于分组的网络100可被配置成覆盖任何合适的区域,包括全球、国家、地区、城市、或设施内、或者任何其他合适的区域。
网络处理器104可以是交换机、路由器、桥接器、或互连网络100上的其他装备的任何其他合适的设备。网络处理器104可被实现为包括一个或多个查找表的可编程设备,该一个或多个查找表被用于指引数据分组通过网络。每个查找表包括一个或多个流表条目。每个流条目被用于处理数据分组。
图2是可配置的多核网络处理器200的一般框图。网络处理器200具有第一核群202和第二核群204。每个核群202、204包括配置成处理数据分组的数个处理核。处理核可以包括固件和用于存储该核本地的代码的专用存储器中的一者或多者。每个核群202、204还可以包括与处理核相关联的数个FIFO接口(未示出)。
处理模式机构218、220与每个核群202、204相关联。处理模式机构218、220可以包括以下一者或多者:开关和多路复用器,或者结构逻辑和总线。处理模式机构218、220可被配置成在流水线处理模式与并行处理模式之间布置处理核。在流水线布置或模式中,软件任务被划分成多个子任务,并且每个任务在单独的处理核上运行。由任何核获得的中间处理信息可被传递给流水线处理中的下一级。在并行模式中,任何任务可以在操作系统(OS)调度器的控制下在任何核中运行。OS调度器提供多个处理核之间的负载平衡。替换地,在并行模式中,可以使用CPU亲和机制来将任务绑定至特定核。尽管针对每个核群202、204示出了分开的处理模式机构218、220,但是单个机构可被用于针对这两个核群配置处理核。
存储器仲裁器206、208与每个核群相关联。仲裁器206、208充当去往存储器210、212的接口并且管理对存储器的访问。例如,仲裁器206、208可以被配置成管理由处理核对存储器的访问。仲裁器206、208可以确定将存储在存储器中的命令、以及相关联的程序指令和数据提供给处理核的顺序。仲裁器206、208可以准予在总线上对存储器210、212的访问。
存储器210、212可以在多核网络处理器200外部,并且包括一个或多个共享静态随机存取存储器(SRAM)组和三态内容可寻址存储器(TCAM)组。存储器210、212可以存储程序代码、查找表、分组数据、以及队列信息中的一者或多者。
多核网络处理器200进一步包括分派器214和重组器216。分派器214被配置成根据多核网络处理器200的操作模式来将接收自交换机核的数据分组分发给处理核。重组器216被配置成接收来自处理核的数据分组并且根据多核网络处理器200的操作模式来对这些数据分组进行组装或重新排序。重组器216可被称为重新排序模块。
流水线处理模式:
图3是配置成在流水线处理模式中操作的示例多核网络处理器300的框图。该示例多核网络处理器300包括具有4个处理核的第一流水线302和具有4个处理核的第二流水线304(更多或更少的处理核可被包括在流水线302、304中)。每个处理核具有用于将分组移入该处理核的输入FIFO接口306以及用于将分组从该处理核移出的输出FIFO接口308。
运行第一处理核310的固件通过从与该处理核相关联的输入FIFO接口306进行读取来处理传入分组。当处理核310完成对传入分组的处理时,该核的固件在与该核相关联的输出FIFO接口308上输出中间分组。“中间分组”是指由核处理器输出的、从由该处理核对输入至该处理核的分组的处理得到的分组。中间分组被输入至下一处理核的输入FIFO接口306并且根据该处理核的固件被处理。对中间分组的处理和转发继续进行直至最终分组由流水线中的最后一个处理核输出。
分派器314可以将分组分发到两个流水线302、304中。分派器314可以应用不同的分发算法。在循环分发中,分组分派器314交替地分发分组。如果第一流水线302中的第一输入FIFO接口306不足以保持分组,则分派器314可以将该分组分发至第二流水线304的第一输入FIFO接口306。如果两个流水线302、304的第一输入FIFO接口306均不足以保持该分组,则分派器314可以停止进一步的分组分发。在基于散列的分发中,分组分派器314应用基于分组报头字段或其他字段的某个算法,并且应用模运算以得到至这两个流水线302、304中的任一者的索引。
分派器314还可以将序列号指派给分组,并且重新排序模块316可以按与分组被分发至流水线中的次序相同的次序取回分组。为了促成重新排序任务,序列号可以是进入FIFO的首个16位字段。
并行处理模式:
图4是配置成在并行处理模式中操作的示例多核网络处理器400的框图。该示例多核网络处理器400包括具有4个处理核的第一处理器群402和具有4个处理核的第二处理器群404(更多或更少的处理核可被包括在群402、404中)。每个处理核具有输入FIFO接口406和输出FIFO接口408。运行处理核的固件通过从与该处理核相关联的输入FIFO接口406进行读取来处理传入分组。当处理核完成对传入分组的处理时,该核的固件在与该核相关联的输出FIFO接口408上输出经处理分组。在并行处理模式中,每个处理核可以运行相同的软件并且处理分组直至完成。
分派器414可以将分组分发到两个处理器群402、404中。分派器414可以应用不同的分发算法。在循环分发中,分组分派器414交替地分发分组。如果第一处理器群402中的一个输入FIFO接口406不足以保持分组,则分派器414可以将该分组分发至第二处理器群404的一个输入FIFO接口406。如果两个群402、404的输入FIFO接口406均不足以保持该分组,则分派器414可以停止进一步的分组分发。在基于散列的分发中,分组分派器414应用基于分组报头字段或其他字段的某个算法,并且应用模运算以得到至这两个群402、404中的任一者的索引。
分派器414还可以将序列号指派给分组,并且重新排序模块416按与分组被分发至流水线中的次序相同的次序取回分组。为了促成重新排序任务,序列号可以是进入FIFO的首个16位字段。
处理模式选择:
图5是提供针对数个处理核选择处理模式的处理模式机构500的框图。处理模式机构500提供了用于将数个处理核配置成流水线处理模式或者并行处理模式的装置。处理模式机构500或者用于配置多个处理核的装置可以包括数个开关元件(诸如举例而言开关S0-S5和/或多路复用器502a-502c)。开关S0-S5和多路复用器502中的每一者可以由模式控制信号504来控制。
当模式控制信号504将开关S0-S5设置成断开状态并且将多路复用器502a-502c设置成指引核输出分组去往上方的FIFO接口F1、F3、F5、F7时,处理模式机构500将处理核配置成流水线处理模式。在这个模式中,分派器514或者用于分发数据分组的装置将分组分发至FIFO接口F0。
处理核或者用于处理数据分组的装置协同处理模式机构500的开关元件可以如下处理所分发的分组:所分发的分组由第一处理核506a处理。第一多路复用器502a接收由第一处理核506a输出的结果得到的中间分组并且将其指引到FIFO接口F1。该中间分组由第二处理核506b处理。第二多路复用器502b接收由第二处理核506b输出的结果得到的中间分组并且将其指引到FIFO接口F3。此处理序列继续进行直至第四处理核506d将最终分组输出至最后一个FIFO接口F7。重新排序模块516接收来自最后一个FIFO接口F7的最终分组。在流水线模式中,不使用下方的FIFO接口F2、F4、F6。
当模式控制信号504将开关S0-S5设置成闭合状态并且将多路复用器502a-502c设置成指引分派器514输入分组去往上方的FIFO接口F1、F3、F5并且指引处理核输出分组去往下方的FIFO接口F2、F4、F6、F7时,处理模式机构500将处理核配置成并行处理模式。在并行处理模式中,上方和下方的FIFO接口F0-F7都被使用。
在并行处理模式中,分派器514或者用于分发数据分组的装置协同处理模式机构的开关元件如下将分组分发给处理核:给第一处理核506a的分组被输入至FIFO接口F0,给第二处理核506b的分组通过第一多路复用器502a被输入至FIFO接口F1,给第三处理核506c的分组通过第二多路复用器502b被输入至FIFO接口F3,给第四处理核506d的分组通过第三多路复用器502c被输入至FIFO接口F5。
每一个处理核处理其各自的分组并且包括多路复用器502a-502c的处理模式机构500如下指引处理核输出话务:第一处理核506a的输出被输入至FIFO接口F2,第二处理核506b的输出被输入至FIFO接口F4,并且第三处理核506c的输出被输入至FIFO接口F6。重新排序模块516从FIFO接口F2、F4、F6和F7收集分组。
图6是提供针对数个处理核选择处理模式的另一示例处理模式机构600的框图。处理模式机构600提供了用于将数个处理核配置成流水线处理模式或者并行处理模式的装置。处理模式机构600或者用于配置多个处理核的装置可以包括存储器602、总线604以及结构逻辑606。
在一些实施例中,处理模式机构600可以如下起作用:每个处理核612a-612d和重新排序模块616与ID相关联。由分派器614分派到处理模式机构600中的每个分组在分组报头字段中具有与核之一或者重新排序模块相对应的ID。此ID向处理模式机构600的结构逻辑606指示将分组发送到何处。模式选择信号610控制处理核612a-612d、分派器614和重新排序模块616之间的FIFO接口分配。
处理模式机构600通过模式选择信号610来将处理核配置成流水线处理模式。在流水线处理模式中,分派器614将具有对应于第一处理核612a的ID的分组输入至第一结构输入FIFO618。该分组传递通过总线604并且由结构逻辑606接收。基于分组ID,结构逻辑606通过总线604将该分组发送到第一处理核612a(核0)的FIFO接口F0_out(F0_输出)。
第一处理核612a处理该分组;将分组ID改变成对应于第二处理核612b(核1)的ID;并且将该分组输入至FIFO接口F0_in(F0_输入)。该分组传递通过总线604并且由结构逻辑606接收。基于分组ID,结构逻辑606将该分组发送到第二处理核612b的FIFO接口F1_out。
第二处理核612b处理该分组;将分组ID改变成对应于第三处理核612c(核2)的ID;并且将该分组输入至FIFO接口F1_in。该分组随后由结构逻辑606接收。基于分组ID,结构逻辑606将该分组发送到第三处理核612c的FIFO接口F2_out。
第三处理核612c处理该分组;将分组ID改变成对应于第四处理核612d(核3)的ID;并且将该分组输入至FIFO接口F2_in。该分组随后由结构逻辑606接收。基于分组ID,结构逻辑606将该分组发送到第四处理核612d的FIFO接口F3_out。
第四处理核612d处理该分组;将分组ID改变成对应于重新排序模块616的ID;并且将该分组输入至FIFO接口F3_in。该分组随后由结构逻辑606接收。基于分组ID,结构逻辑606通过第一结构输出FIFO620将该分组发送给重新排序模块616。
对于流水线模式,与分派器模块相关联的结构输入FIFO接口618的数目以及与重新排序模块616相关联的结构输出FIFO接口620的数目可以等于流水线的数目。例如,在刚才描述的流水线中,4个处理核形成单条流水线,因此仅单个结构输入FIFO接口618与分派器614相关联并且单个结构输出FIFO接口620与重新排序模块616相关联。在另一配置中,4个处理核612a-612d可以定义两条分开的流水线,每条流水线具有2个核。在这一情形中,将存在与分派器614相关联的两个结构输入FIFO接口618、622以及与重新排序模块616相关联的两个结构输出FIFO接口620、624。
处理模式机构600通过模式选择信号610来将处理核配置成并行处理模式。在并行处理模式中,分派器614或者用于分发数据分组的装置将具有对应于第一处理核612a(核0)的ID的第一分组输入至第一结构输入FIFO接口618,将具有对应于第二处理核612b(核1)的ID的第二分组输入至第二结构输入FIFO622,将具有对应于第三处理核612c(核3)的ID的第三分组输入至第三结构输入FIFO接口(未示出),并且将具有对应于第四处理核612d(核4)的ID的第四分组输入至第四结构输入FIFO接口(未示出)。
结构逻辑606在总线604上接收每一个分组。基于相应的分组ID,结构逻辑606将每个分组发送到相应的FIFO接口F0_out、F1_out、F2_out、和F3_out。处理核612a-612d中的每一个处理核处理其相应的分组;将其分组的分组ID改变成对应于重新排序模块616的ID;以及将其分组输出到其相应的FIFO接口F0_in、F1_in、F2_in、和F3_in。结构逻辑606接收这些分组并且通过相应的结构输出FIFO接口620、624将这些分组发送给重新排序模块616。
对于并行处理模式,与分派器相关联的结构输入FIFO接口618、622的数目以及与重新排序模块相关联的结构输出FIFO接口620、624的数目可以等于处理核612a-612d的数目。例如,在刚才描述的多核网络处理器中,尽管图6中仅解说了每种类型的FIFO接口中的两个FIFO接口,但是存在4个结构输入FIFO接口和4个结构输出FIFO接口。
图7是用于使用可在流水线处理模式与并行处理模式之间配置的网络处理器来处理数据分组的示例方法700的流程图。在702,网络处理器将多个处理核配置成所选处理模式。所选处理模式可以是流水线处理模式和并行处理模式中的一者。
例如,网络处理器可以使用FIFO接口和处理模式机构或者用于配置处理核的装置来将处理核配置成流水线处理模式或者并行处理模式。此类处理模式机构或者用于配置处理核的装置可以是本文中参照图5和6公开的任何相应结构、元件和/或特征、或其等效物。为此目的,网络处理器可以将多个开关元件(例如,开关或多路复用器)配置成互连处理核以在流水线处理模式或者并行处理模式中操作。网络处理器还可以或者替换地将结构逻辑和总线配置成互连处理核以在流水线处理模式或者并行处理模式中操作。
在704,网络处理器根据所选处理模式使用分派器或者用于分发分组的装置来将数据分组分发给多个处理核。此类分派器或者用于分发分组的装置可以是本文中参照图5和6公开的任何相应结构、元件和/或特征、或其等效物。
在706,网络处理器使用处理核或者用于处理的装置来处理数据分组。这些分组是根据已知的分组流技术来处理的。此类处理可以包括对照关联于核处理器的流表的流条目来匹配数据分组,如果找到流条目匹配则对分组执行指令集,以及向另一处理核发送该分组。执行指令可以包括修改分组和更新匹配字段、更新动作集、以及更新元数据。在流水线处理的情形中,这些指令可以指引分组去往流水线中的另一处理核。在并行处理的情形中,这些指令可以指引分组去往重新排序模块。
在708,网络处理器使用重新排序模块或者用于输出分组的装置来输出数据分组。此类重新排序模块或者用于输出分组的装置可以是本文中参照图5和6公开的任何相应结构、元件和/或特征、或其等效物。在流水线处理的情形中,重新排序模块从流水线中的最后一个处理核接收最终数据分组。在并行处理的情形中,重新排序模块从并行布置中的每一个处理核接收分组并且以期望次序发送这些分组。
提供了本公开的各个方面以使本领域普通技术人员能够实践本发明。对本公开通篇给出的示例性实施例的各种修改对于本领域技术人员而言将是显而易见的,并且本文中公开的概念可扩展到其他磁性存储设备。由此,权利要求并非旨在限定于本公开的各个方面,而是要被授予与权利要求的语言相一致的完全范围。本公开中通篇描述的示例性实施例的各个组件的所有结构和功能上为本领域普通技术人员所知或将来所知的等效方案通过引用明确纳入于此,且意在被权利要求书所涵盖。此外,本文中所公开的任何内容都并非旨在贡献给公众,无论这样的公开是否在权利要求书中被显式地叙述。权利要求的任何要素都不应当在35U.S.C.§112第六款的规定下来解释,除非该要素是使用短语“用于……的装置”来明确叙述的或者在方法权利要求情形中该要素是使用短语“用于……的步骤”来叙述的。

Claims (27)

1.一种网络处理器,包括:
多个处理核,用于处理数据分组;以及
处理模式机构,所述处理模式机构能被配置成在流水线处理模式与并行处理模式之间配置所述处理核。
2.如权利要求1所述的网络处理器,其特征在于,进一步包括随所述处理核布置的多个先入先出(FIFO)接口,其中所述处理模式机构被配置成将所述FIFO接口与所述处理核互连以在所述流水线处理模式或者所述并行处理模式中操作。
3.如权利要求1所述的网络处理器,其特征在于,所述处理模式机构包括多个开关元件,所述多个开关元件能被配置成互连所述处理核以在所述流水线处理模式或者所述并行处理模式中操作。
4.如权利要求3所述的网络处理器,其特征在于,所述开关元件包括开关和多路复用器中的一者或两者。
5.如权利要求1所述的网络处理器,其特征在于,所述处理模式机构包括结构逻辑和总线,所述结构逻辑和总线能被配置成互连所述处理核以在所述流水线处理模式或者所述并行处理模式中操作。
6.如权利要求1所述的网络处理器,其特征在于,所述处理核能被配置成多个处理核群,每一群具有相关联的处理模式机构,该处理模式机构能被配置成在流水线处理模式与并行处理模式之间配置一群内的处理核。
7.一种网络处理器,包括:
用于处理数据分组的装置;以及
用于在流水线处理模式与并行处理模式之间配置所述用于处理的装置的装置。
8.如权利要求7所述的网络处理器,其特征在于,进一步包括随所述用于处理的装置布置的多个先入先出(FIFO)接口,其中所述用于配置的装置被配置成将所述FIFO接口与所述用于处理的装置互连以在所述流水线处理模式或者所述并行处理模式中操作。
9.如权利要求7所述的网络处理器,其特征在于:
所述用于处理的装置包括多个处理核;以及
所述用于配置的装置包括能被配置成互连所述处理核以在所述流水线处理模式或者所述并行处理模式中操作的多个开关元件。
10.如权利要求9所述的网络处理器,其特征在于,所述开关元件包括开关和多路复用器中的一者或两者。
11.如权利要求7所述的网络处理器,其特征在于:
所述用于处理的装置包括多个处理核,以及
所述用于配置的装置包括能被配置成互连所述处理核以在所述流水线处理模式或者所述并行处理模式中操作的结构逻辑和总线。
12.如权利要求7所述的网络处理器,其特征在于,所述用于处理的装置包括能被配置成多个处理核群的多个处理核,每一群具有相关联的用于在流水线处理模式与并行处理模式之间配置一群内的处理核的装置。
13.一种用于处理数据分组的方法,包括:
在所选处理模式中配置多个处理核,所选处理模式包括流水线处理模式和并行处理模式中的一者。
14.如权利要求13所述的方法,其特征在于,配置包括将所述处理核与多个先入先出(FIFO)接口互连以在所述流水线处理模式或者所述并行处理模式中操作。
15.如权利要求13所述的方法,其特征在于,配置包括将多个开关元件配置成互连所述处理核以在所述流水线处理模式或者所述并行处理模式中操作。
16.如权利要求15所述的方法,其特征在于,所述开关元件包括开关和多路复用器中的一者或两者。
17.如权利要求13所述的方法,其特征在于,配置包括将结构逻辑和总线配置成互连所述处理核以在所述流水线处理模式或者所述并行处理模式中操作。
18.一种计算机程序产品,包括:
包括能由网络处理器执行的代码的计算机可读介质,所述网络处理器包括多个处理核和处理模式机构,所述代码在所述网络处理器中执行时使所述网络处理器:
在所选处理模式中配置多个处理核,所选处理模式包括流水线处理模式和并行处理模式中的一者。
19.如权利要求18所述的计算机程序产品,其特征在于,所述代码在所述网络处理器中执行时使所述网络处理器通过将所述处理核与多个先入先出(FIFO)接口互连以在所述流水线处理模式或者所述并行处理模式中操作的方式来在所选处理模式中配置多个处理核。
20.如权利要求18所述的计算机程序产品,其特征在于,所述代码在所述网络处理器中执行时使所述网络处理器通过将多个开关元件配置成互连所述处理核以在所述流水线处理模式或者所述并行处理模式中操作的方式来在所选处理模式中配置多个处理核。
21.如权利要求20所述的计算机程序产品,其特征在于,所述开关元件包括开关和多路复用器中的一者或两者。
22.如权利要求18所述的计算机程序产品,其特征在于,所述代码在所述网络处理器中执行时使所述网络处理器通过将结构逻辑和总线配置成互连所述处理核以在所述流水线处理模式或者所述并行处理模式中操作的方式来在所选处理模式中配置多个处理核。
23.一种网络处理器,包括:
用于处理数据分组的多个处理核,其中所述处理核能在流水线处理模式与并行处理模式之间配置。
24.如权利要求23所述的网络处理器,其特征在于,进一步包括配置成互连所述处理核以在所述流水线处理模式或者所述并行处理模式中操作的多个开关。
25.如权利要求24所述的网络处理器,其特征在于,进一步包括随所述处理核布置的多个先入先出(FIFO)接口,其中所述开关元件被进一步配置成将所述FIFO接口与所述处理核互连以在所述流水线处理模式或者所述并行处理模式中操作。
26.如权利要求23所述的网络处理器,其特征在于,进一步包括存储器以及用于向所述处理核提供对所述存储器的访问的存储器总线,其中所述存储器总线互连所述处理核以在所述流水线处理模式或者所述并行处理模式中操作。
27.如权利要求23所述的网络处理器,其特征在于,所述处理核能在所述流水线处理模式中被配置到多条流水线中。
CN201480013074.7A 2013-03-12 2014-03-11 可配置的多核网络处理器 Expired - Fee Related CN105075204B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/797,838 US9430239B2 (en) 2013-03-12 2013-03-12 Configurable multicore network processor
US13/797,838 2013-03-12
PCT/US2014/023395 WO2014164752A2 (en) 2013-03-12 2014-03-11 Configurable multicore network processor

Publications (2)

Publication Number Publication Date
CN105075204A true CN105075204A (zh) 2015-11-18
CN105075204B CN105075204B (zh) 2018-03-16

Family

ID=50628906

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480013074.7A Expired - Fee Related CN105075204B (zh) 2013-03-12 2014-03-11 可配置的多核网络处理器

Country Status (6)

Country Link
US (1) US9430239B2 (zh)
EP (1) EP2974185A2 (zh)
JP (2) JP6193467B2 (zh)
KR (1) KR101714659B1 (zh)
CN (1) CN105075204B (zh)
WO (1) WO2014164752A2 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107077390A (zh) * 2016-07-29 2017-08-18 华为技术有限公司 一种任务处理方法以及网卡
CN109918043A (zh) * 2019-03-04 2019-06-21 上海熠知电子科技有限公司 一种基于虚拟通道的运算单元共享方法和系统
CN111884948A (zh) * 2020-07-09 2020-11-03 烽火通信科技股份有限公司 一种流水线调度方法与装置
CN113986813A (zh) * 2021-09-18 2022-01-28 苏州浪潮智能科技有限公司 片上网络结构构建及使用的方法、系统、设备和存储介质
CN115185878A (zh) * 2022-05-24 2022-10-14 中科驭数(北京)科技有限公司 一种多核分组网络处理器架构及任务调度方法

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150019702A1 (en) * 2013-07-10 2015-01-15 Brocade Communications Systems, Inc. Flexible flow offload
US9348602B1 (en) 2013-09-03 2016-05-24 Amazon Technologies, Inc. Resource allocation for staged execution pipelining
CN105159779B (zh) * 2015-08-17 2020-03-13 深圳中兴网信科技有限公司 提高多核cpu数据处理性能的方法和系统
EP3433985B1 (en) * 2016-03-23 2021-01-27 Clavister AB Method for traffic shaping using a serial packet processing algorithm and a parallel packet processing algorithm
JP6943942B2 (ja) 2016-03-23 2021-10-06 クラビスター アクティエボラーグ 順次パケット処理アルゴリズム及び並列パケット処理アルゴリズムを用いることによってトラフィックシェーピングを行う方法
US9832072B1 (en) * 2016-05-31 2017-11-28 128 Technology, Inc. Self-configuring computer network router
US10719470B2 (en) 2016-09-26 2020-07-21 Wave Computing, Inc. Reconfigurable fabric direct memory access with multiple read or write elements
US10614357B2 (en) * 2017-04-17 2020-04-07 Cerebras Systems Inc. Dataflow triggered tasks for accelerated deep learning
WO2018229745A1 (en) * 2017-06-16 2018-12-20 Drivenets Ltd. Parallel information processing on multi-core computing platforms
US11165720B2 (en) * 2017-12-19 2021-11-02 Xilinx, Inc. Network interface device
JP6977621B2 (ja) * 2018-03-02 2021-12-08 日本電信電話株式会社 制御装置、及び制御方法
KR20200112439A (ko) * 2019-03-22 2020-10-05 삼성전자주식회사 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법
US10826801B1 (en) 2019-07-31 2020-11-03 Bank Of America Corporation Multi-level data channel and inspection architectures
US11115310B2 (en) * 2019-08-06 2021-09-07 Bank Of America Corporation Multi-level data channel and inspection architectures having data pipes in parallel connections
US11470046B2 (en) 2019-08-26 2022-10-11 Bank Of America Corporation Multi-level data channel and inspection architecture including security-level-based filters for diverting network traffic

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128720A (en) * 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
CN1679281A (zh) * 2002-08-24 2005-10-05 思科技术公司 分组处理引擎
CN1997987A (zh) * 2004-06-30 2007-07-11 英特尔公司 用于在互连网络路由器内进行分组合并的方法和设备
US20090285228A1 (en) * 2008-05-19 2009-11-19 Rohati Systems, Inc. Multi-stage multi-core processing of network packets

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5960683A (ja) * 1982-09-30 1984-04-06 Toshiba Corp アレイプロセッサ装置
US4811210A (en) * 1985-11-27 1989-03-07 Texas Instruments Incorporated A plurality of optical crossbar switches and exchange switches for parallel processor computer
JPH02284277A (ja) * 1989-04-26 1990-11-21 Mitsubishi Electric Corp グラフィック表示装置
JP2000295613A (ja) * 1999-04-09 2000-10-20 Nippon Telegr & Teleph Corp <Ntt> 再構成可能なハードウェアを用いた画像符号化方法,画像符号化装置および画像符号化のためのプログラム記録媒体
US20020107903A1 (en) 2000-11-07 2002-08-08 Richter Roger K. Methods and systems for the order serialization of information in a network processing environment
US6883084B1 (en) * 2001-07-25 2005-04-19 University Of New Mexico Reconfigurable data path processor
US7420392B2 (en) * 2001-09-28 2008-09-02 Xilinx, Inc. Programmable gate array and embedded circuitry initialization and processing
US6781407B2 (en) * 2002-01-09 2004-08-24 Xilinx, Inc. FPGA and embedded circuitry initialization and processing
US6789167B2 (en) 2002-03-06 2004-09-07 Hewlett-Packard Development Company, L.P. Method and apparatus for multi-core processor integrated circuit having functional elements configurable as core elements and as system device elements
US20110238948A1 (en) 2002-08-07 2011-09-29 Martin Vorbach Method and device for coupling a data processing unit and a data processing array
US7340585B1 (en) * 2002-08-27 2008-03-04 Xilinx, Inc. Method and system for fast linked processor in a system on a chip (SoC)
US7334086B2 (en) 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
EP2375676B1 (en) * 2004-03-10 2013-06-26 Qualcomm Incorporated High data rate interface apparatus and method
JP4546775B2 (ja) * 2004-06-30 2010-09-15 富士通株式会社 時分割多重処理可能なリコンフィギュラブル回路
US7738385B2 (en) 2004-11-30 2010-06-15 Broadcom Corporation Mirroring of data in a network device
KR100729241B1 (ko) * 2005-12-05 2007-06-15 주식회사 텔레칩스 디블록킹 필터
JP4878487B2 (ja) * 2006-03-30 2012-02-15 キヤノン株式会社 情報配信装置、情報配信システム、情報処理方法、およびプログラム
JP5354427B2 (ja) * 2006-06-28 2013-11-27 アクロニクス セミコンダクター コーポレイション 集積回路のための再構成可能論理ファブリックおよび再構成可能論理ファブリックを構成するためのシステムおよび方法
US8099583B2 (en) * 2006-08-23 2012-01-17 Axis Semiconductor, Inc. Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing
US20090128189A1 (en) * 2007-11-19 2009-05-21 Raminda Udaya Madurawe Three dimensional programmable devices
WO2012093335A1 (en) 2011-01-06 2012-07-12 Marvell Israel (M.I.S.L) Ltd. Network device with a programmable core
US9449257B2 (en) * 2012-12-04 2016-09-20 Institute Of Semiconductors, Chinese Academy Of Sciences Dynamically reconstructable multistage parallel single instruction multiple data array processing system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128720A (en) * 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
CN1679281A (zh) * 2002-08-24 2005-10-05 思科技术公司 分组处理引擎
CN1997987A (zh) * 2004-06-30 2007-07-11 英特尔公司 用于在互连网络路由器内进行分组合并的方法和设备
US20090285228A1 (en) * 2008-05-19 2009-11-19 Rohati Systems, Inc. Multi-stage multi-core processing of network packets

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107077390A (zh) * 2016-07-29 2017-08-18 华为技术有限公司 一种任务处理方法以及网卡
WO2018018611A1 (zh) * 2016-07-29 2018-02-01 华为技术有限公司 一种任务处理方法以及网卡
CN107077390B (zh) * 2016-07-29 2021-06-29 华为技术有限公司 一种任务处理方法以及网卡
CN113504985A (zh) * 2016-07-29 2021-10-15 华为技术有限公司 一种任务处理方法以及网络设备
CN109918043A (zh) * 2019-03-04 2019-06-21 上海熠知电子科技有限公司 一种基于虚拟通道的运算单元共享方法和系统
CN109918043B (zh) * 2019-03-04 2020-12-08 上海熠知电子科技有限公司 一种基于虚拟通道的运算单元共享方法和系统
CN111884948A (zh) * 2020-07-09 2020-11-03 烽火通信科技股份有限公司 一种流水线调度方法与装置
CN111884948B (zh) * 2020-07-09 2022-08-12 烽火通信科技股份有限公司 一种流水线调度方法与装置
CN113986813A (zh) * 2021-09-18 2022-01-28 苏州浪潮智能科技有限公司 片上网络结构构建及使用的方法、系统、设备和存储介质
CN113986813B (zh) * 2021-09-18 2023-08-04 苏州浪潮智能科技有限公司 片上网络结构构建及使用的方法、系统、设备和存储介质
CN115185878A (zh) * 2022-05-24 2022-10-14 中科驭数(北京)科技有限公司 一种多核分组网络处理器架构及任务调度方法

Also Published As

Publication number Publication date
KR101714659B1 (ko) 2017-03-09
JP6193467B2 (ja) 2017-09-06
CN105075204B (zh) 2018-03-16
US9430239B2 (en) 2016-08-30
KR20150128828A (ko) 2015-11-18
EP2974185A2 (en) 2016-01-20
JP2017225166A (ja) 2017-12-21
WO2014164752A3 (en) 2014-12-24
US20140281385A1 (en) 2014-09-18
JP2016516352A (ja) 2016-06-02
WO2014164752A2 (en) 2014-10-09

Similar Documents

Publication Publication Date Title
CN105075204A (zh) 可配置的多核网络处理器
Mehraghdam et al. Specifying and placing chains of virtual network functions
US10986041B2 (en) Method and apparatus for virtual network functions and packet forwarding
KR101476113B1 (ko) 룩업 클러스터 컴플렉스
US9825884B2 (en) Protocol independent programmable switch (PIPS) software defined data center networks
Caulfield et al. Beyond SmartNICs: Towards a fully programmable cloud
CN107196807A (zh) 网络中间设备及其部署方法
Yazdinejad et al. P4 to SDNet: Automatic generation of an efficient protocol-independent packet parser on reconfigurable hardware
CN108228354A (zh) 调度方法、系统、计算机设备和介质
CN108363615A (zh) 用于可重构处理系统的任务分配方法和系统
CN102334112A (zh) 用于虚拟机网络的方法和系统
EP3145134B1 (en) Lookup device and lookup configuration method
US11082297B2 (en) Network system and management method and apparatus thereof
Cong et al. A configurable, programmable and software-defined network on chip
CN106559339B (zh) 一种报文处理方法及装置
Feng et al. Enabling in-situ programmability in network data plane: From architecture to language
EP3399424B1 (en) Using unified api to program both servers and fabric for forwarding for fine-grained network optimizations
CN115426312A (zh) 一种大规模多模态网络中标识管理及优化转发方法和装置
EP3154228A1 (en) Data transfer system, data transfer server, data transfer method, and program recording medium
Hsu et al. The design of a configurable and low-latency packet parsing system for communication networks
Duan et al. Separating VNF and Network Control for Hardware‐Acceleration of SDN/NFV Architecture
Duquennoy et al. MpNOC Design: modeling and simulation
CN101197782B (zh) 一种基于多核处理器的网络设备的控制方法及系统
Wahlah et al. PUMA: placement unification with mapping and guaranteed throughput allocation on an FPGA using a hardwired NoC
US10587433B2 (en) Processing virtual local area network

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180316

Termination date: 20190311