CN106537863B - 用于并发地处理网络分组的方法和设备 - Google Patents

用于并发地处理网络分组的方法和设备 Download PDF

Info

Publication number
CN106537863B
CN106537863B CN201480066759.8A CN201480066759A CN106537863B CN 106537863 B CN106537863 B CN 106537863B CN 201480066759 A CN201480066759 A CN 201480066759A CN 106537863 B CN106537863 B CN 106537863B
Authority
CN
China
Prior art keywords
additional process
process operations
grouping
result
channel
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
Application number
CN201480066759.8A
Other languages
English (en)
Other versions
CN106537863A (zh
Inventor
A·沃尔格穆特
R·泽马赫
G·勒韦
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.)
Kaiwei International Co
Marvell International Ltd
Marvell Asia Pte Ltd
Original Assignee
Mawier International Trade Co Ltd
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 Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN106537863A publication Critical patent/CN106537863A/zh
Application granted granted Critical
Publication of CN106537863B publication Critical patent/CN106537863B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3063Pipelined operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/16General purpose computing application
    • G06F2212/163Server or database system

Abstract

针对分组的一个或多个处理操作在网络设备的分组处理节点执行,该分组处理节点被配置为执行针对分组的多个不同处理操作。第一加速引擎被触发用于执行针对分组的第一附加处理操作。第一附加处理操作构成与分组处理节点被配置成执行的多个不同处理操作不同的操作。第一附加处理操作由第一加速引擎执行。与在第一加速引擎执行第一附加处理操作并发地,由分组处理节点执行针对分组的第二附加处理操作的至少一部分,第二附加处理操作不依赖于第一附加处理操作的结果。

Description

用于并发地处理网络分组的方法和设备
相关申请的交叉引用
本公开要求于2013年10月17日提交的美国临时专利申请No.61/892,063以及于2013年12月19日提交的美国临时专利申请No.61/918,493(两者名称均为“与网络HW加速器(引擎)的高性能处理器接口(High performance processor interface to network HWaccelerator(Engines))”)的权益,这里特别通过引证将它们公开的整体内容结合于本文中。
技术领域
本公开总体涉及网络设备(诸如交换机、路由器和边缘设备),并且更特别地涉及用于处理这些设备中的通信分组的系统和方法。
背景技术
本文提供的背景说明用于总体呈现本公开背景的目的。当前署名的诸位发明人的工作(就其在本背景技术章节被描述的程度而言)以及可能并不能作为提交时的现有技术的本说明的各方面并未明确或以暗指的方式被承认是相对于本公开的现有技术。
一些网络设备(诸如网络交换机、桥接器、路由器等)采用多个分组处理元件来同时处理多个分组,从而提供高的处理能力。例如,网络设备可利用并行分组处理,其中多个分组处理元件同时且并行执行不同分组的处理。在其他网络设备中,管路架构采用顺序布置的分组处理元件,使管路中的不同分组处理元件可在给定时间正在处理不同的分组。
发明内容
在实施例中,用于在包括至少一个分组处理节点和多个加速引擎的网络设备中处理分组的方法包括在分组处理节点处执行针对分组的一个或多个操作处理,其中分组处理节点被配置为执行针对分组的多个不同处理操作。该方法还包括触发第一加速引擎,以用于执行针对分组的第一附加处理操作,其中第一附加处理操作构成与分组处理节点被配置成执行的多个不同处理操作不同的操作。该方法进一步包括由第一加速引擎执行第一附加处理操作。该方法另外包括:与在第一加速引擎处执行第一附加处理操作并发地,由分组处理节点执行针对分组的第二附加处理操作的至少一部分,其中第二附加处理操作不依赖于第一附加操作处理的结果。
在另一个实施例中,网络设备包括多个网络端口,其被配置为在网络上接收和传输分组。该网络设备还包括至少一个分组处理节点,其被配置为执行针对分组的多个不同处理操作。该网络设备进一步包括多个加速引擎,其至少包括被配置为执行第一附加处理操作的第一加速引擎,其中第一附加处理操作构成与分组处理节点被配置为执行的多个不同处理操作不同的操作。至少一个分组处理节点被配置为:执行分组上的一个或多个处理操作,触发第一加速引擎,以用于执行针对分组的第一附加处理操作,以及与由第一加速引擎针对分组所执行的第一处理操作并发地,执行针对分组的第二附加处理操作的至少一部分,其中第二附加处理操作不依赖于第一附加处理操作的结果。
在又一个实施例中,用于在包括至少一个分组处理节点和多个加速引擎的网络设备中处理分组的方法包括:由分组处理节点的处理单元启动与第一加速引擎的事务,以触发第一加速引擎用于执行针对分组的第一处理操作。该方法进一步包括当第一处理操作的结果从第一加速引擎接收到时,尝试从第一存储器位置检索第一处理操作的结果,第一处理操作的结果预期被写入到第一存储器位置。该方法另外包括:响应于尝试从第一存储器位置检索结果,确定结果是否已被写入到第一存储器位置。当确定了结果已被写入到第一存储器位置,该方法包括启动由处理单元从第一存储器位置对结果的检索。当确定了结果尚未被写入到第一存储器位置时,该方法包括锁定处理单元直到结果的至少一部分被写入到第一存储器位置,并且当结果的至少一部分已被写入到第一存储器位置时,由处理单元启动从第一存储器位置对结果的检索。
在又一个实施例中,网络设备包括多个网络端口,其被配置为在网络上接收和传输分组。该网络设备还包括至少一个分组处理节点,其被配置为执行针对分组的多个不同处理操作。该网络设备另外包括多个加速引擎,其至少包括被配置为执行第一处理操作的第一加速引擎,其中第一处理操作构成与分组处理节点被配置成执行的多个不同处理操作不同的操作。分组处理节点包括处理单元,其被配置为对用于执行第一处理操作的第一加速引擎启动第一事务,并且在启动第一事务之后,当第一处理操作的结果从第一加速引擎接收到时,尝试从第一存储器位置检索第一处理操作的结果,第一处理操作的结果预期被写入到第一存储器位置。分组处理节点被配置为使第一加速引擎被触发用于执行针对分组的第一处理操作。分组处理节点还被配置为:在使第一加速引擎被触发用于第一处理操作之后,并且响应于由处理单元尝试检索第一处理操作的结果,确定结果是否已被写入到第一存储器位置。分组处理节点进一步被配置为:当确定了结果已被写入到第一存储器位置时,由处理单元启动从第一存储器位置对结果的检索,以及当确定了结果尚未被写入到第一存储器位置时,锁定处理单元,直到结果的至少一部分被写入到第一存储器位置,并且随后,当结果的至少一部分已被写入到第一存储器位置时,由处理单元启动从第一存储器位置对结果的检索。
附图说明
图1为根据实施例的被配置为通过使用分组处理节点和加速引擎来有效地处理网络分组的实例网络设备的简化框图。
图2为示出了根据实施例的由图1分组处理节点执行的示例性处理线程的视图。
图3为根据实施例的与图1的网络设备一起使用的引擎接入点的框图。
图4为根据实施例的由图3引擎接入点使用的加速引擎请求简档表(profiletable)的实例条目(entry)的视图。
图5为根据实施例的用于图1网络设备的分组处理节点的框图。
图6为根据实施例的用于在网络设备中处理分组的实例方法的流程图。
图7为根据实施例的用于在网络设备中处理分组的另一实例方法的流程图。
具体实施方式
图1为根据实施例的被配置为通过使用分组处理节点和加速引擎来有效地处理网络分组的实例网络设备100的简化框图。网络设备100大体为计算机网络化设备,其连接两个或更多个计算机系统、网络段、子网络等。例如,网络设备100在一个实施例中为交换机。然而,应当注意,网络设备100并非必然局限于特定协议层或者特定网络化技术(例如以太网)。例如,网络设备100还可为桥接器、路由器、VPN集中器(concentrator)等。
网络设备100包括分组处理器(网络处理器)101,而分组处理器101则包括多个外部处理引擎106以及布置在分组处理簇(PPC)102中的多个分组处理节点(PPN)104。尽管图1示出了三个PPC 102,然而网络设备100在其他实施例中包括其他合适数量(例如2个、4个、5个、6个、7个等)PPC 102。此外,在一些实施例中,PPN 104并非布置在分组处理簇中。网络设备100进一步包括耦合至网络处理器101的多个网络端口112,并且每个网络端口112通过相应通信链接耦合至通信网络和/或位于通信网络中的另一合适网络设备。一般而言,分组处理器101被配置为处理通过入站端口(ingress prot)112接收到的分组、确定分组通过其传输的相应出站端口(egress port)112、以及通过确定的出站端口112传输分组。
在一些实施例中,网络处理器101处理与分组相关的分组描述符而非处理分组自身。在实施例中,分组描述符包括来自分组的一些信息,诸如分组的一些或全部标头信息,并且/或者包括由网络设备100对分组产生的信息。在一些实施例中,分组描述符进一步包括其他信息,诸如指示符被存储在与网络设备100相关的存储器的何处。为了易于阐述,术语“分组”在本文中用于指代分组自身或者与分组相关的分组描述符。此外,如在本文中使用的,术语“分组处理元件(PPE)”和术语“分组处理节点(PPN)”可互换地用于指代处理模块,这些处理模块被配置为执行在由网络设备100接收的分组上的分组处理操作。
在实施例中,网络设备100进一步包括分配器模块118和重新排序单元120。分配器模块118被配置为分配通过入站端口112接收到分组,以由PPC 102内的PPN 104处理。PPN104被配置为并行且并发地对提供给PPN 104的分组执行处理。在实施例中,在完成分组处理时,PPN 104被配置为将分组提供给重新排序单元120。在实施例中,重新排序单元120被配置为至少维持进入网络设备100的相同数据流内的分组的顺序,以确保这些分组以这些分组由网络设备100接收的顺序从网络设备100传输出去。在实施例中,重新排序单元120将呈现适当顺序的分组提供给适当的出站端口112,分组通过这些出站端口由网络设备100传输,并且网络设备100从适当的出站端口112传输这些分组。
根据实施例,PPN 104被配置为使用存储在非易失性存储器(例如共享存储器108)中的计算机可读指令来处理分组。在实施例中,每个PPN 104被配置为执行分组的所有必要处理(运行至完成处理)。在另一实施例中,每个PPN 104被配置为仅执行分组处理的一部分。例如,尽管分组处理器101为图1所示的具有布置成并行构造的PPN 104,然而在另一实施例中,分组处理器101包括PPN 104的管路,其中管路中的PPN 104被配置为执行分组处理的一部分并且将分组传递给管路中的下一个PPN 104用于执行分组处理的另一部分。在实施例中,使用应用特定型集成电路(ASIC)或其他合适的硬件部件来实现外部处理引擎106,并且每个外部处理引擎106专用于执行单个的通常为处理密集型的操作。在分组处理过程中,PPN 104被配置为接合外部引擎106,用于执行针对分组的特定处理操作。仅仅举例而言,在实例实施例中,第一外部处理引擎106(例如引擎106a)为转发查找引擎,第二外部处理引擎106(例如引擎106x)为策略查找引擎,第三外部处理引擎106(例如引擎106n)为循环冗余校验(CRC)计算引擎等等。在分组处理过程中,PPN 104被配置为选择性地接合外部处理引擎106用于执行分组上的特定处理操作。在至少一些实施例中,PPN 104并不被配置为执行外部处理引擎106被配置成执行的特定处理操作。在至少一些实施例和/或场合中,外部处理引擎106被配置为执行的这些特定处理操作通常为高度资源密集型和/或如果使用更为一般化的处理器(诸如PPN 104)来处理这些操作的话则需要相对较长时间来执行。在至少一些实施例和场合中,PPN 104将花费长得多(例如两倍长、十倍长、100倍长等)的时间来执行外部处理引擎106被配置成执行的处理操作。这样,在至少一些实施例和/或场合中,外部处理引擎106通过使由PPN 104执行将花费较长时间的至少一些处理操作加速进行来辅助PPN 104。相应地,外部处理引擎106有时在本文中称为“加速引擎”。在实施例中,PPE104被配置为利用由外部处理引擎106执行的处理操作的结果来对分组进行进一步处理,例如以确定针对分组将要采取的特定动作,诸如转发动作、策略控制动作等。
在实施例中,当PPN 104接合加速引擎106用于执行针对分组的特定处理操作时,PPN 104继续对分组的处理并且以与在加速引擎106处执行的特定处理操作并发的方式执行针对分组的一个或多个附加处理操作。在至少一些实施例中,PPN 104被配置为在分组处理过程中支撑对加速引擎106的多个并发挂起的事务或请求。在实施例中,为了有效管理对应于对加速引擎106的并发挂起的请求的响应,PPN 104在事务启动时对每个事务指派响应标识符(ID),并且随后使用指派给特定事务的ID来确定对特定事务的响应已被PPN 104接收。使用在事务启动时指派给事务的相应ID来管理对应于多个并发挂起事务的响应允许PPN 104快速且有效地确定对应于特定事务的结果已被PPN接收并且可用于在PPN处对分组进行进一步处理。
在实施例中,每个PPN 104包括相应处理单元114和网络接入点115。在实施例中,处理单元114被配置为通过执行存储在共享存储器108中的计算机可读指令来执行针对分组的处理操作。在实施例中,处理单元114为合适的微处理器。在另一实施例中,处理单元114为除了微处理器以外的合适处理单元。在分组处理过程中,在实施例中,处理单元114启动与加速引擎106的事务以触发加速引擎106执行针对分组的处理操作,并且网络接入点115使适当的加速引擎106被触发用于执行处理操作。网络接入点115包括事务管理器116,该事务管理器被配置为指派与由处理单元114启动的事务对应的ID,并且将这些ID提供给处理单元114。在实施例中,处理单元114被配置为随后使用这些ID来获取对应事务的结果(当这些结果变得可由处理单元114获得时)。
根据实施例,为了启动与加速引擎106的事务,处理单元114对网络接入点115发布加载命令。该加载命令对网络接入点115指示将要由加速引擎106执行的针对分组的特定处理操作。在实施例中,响应于发布加载命令,处理单元114从事务管理器116加载由事务管理器116指派给所启动事务的ID。在实施例中,使用加载命令启动事务允许处理单元114接收与事务启动并发的请求对应的ID。在实施例中,当处理单元114尝试获取特定处理操作的结果时,处理单元114对事务管理器116发布加载命令,并且在加载命令的地址字段包括指派给对应事务的信道ID。
在实施例中,网络接入点115利用信道ID来确定事务结果是否可以用于被处理单元114获取。当网络接入点115确定事务结果可以用于被处理单元114获取时,网络接入点115使该结果被提供给处理单元114。在另一方面,在实施例中,如果网络接入点115确定事务结果尚不可以被处理单元114获取时(例如,当该结果尚未从被触发执行所请求处理操作的加速引擎106接收到时),网络接入点115锁定处理单元114,直到该事务结果的至少一部分变得可以用于被处理单元114获取。随后,在实施例中,当事务结果的至少一部分变得可以用于被处理单元114获取时,网络接入点115通过将事务结果提供给处理单元114来解锁处理单元114。
如将在下面更详细地所描述的,在各种实施例和方案中,在PPN 104对分组的处理过程中,启动并且并发挂起与加速引擎106的事务,与加速引擎106针对分组所执行的处理操作并发地、在PPN 104处执行分组上的处理操作,为启动的事务指派ID,使用加载命令来启动事务,和/或使用加载命令或所指派ID来随后检索事务结果,这些大体上提高了分组处理的效率,并且减少了与分组处理相关联的延时。
图2为示出了根据实施例的由图1分组处理节点104(例如,PPN 104a)执行的处理线程200实例的视图。在实施例中,线程200由PPN 104a的处理单元114来执行。出于说明的目的,实例线程200论述为由图1网络设备100的PPN 104来执行。在其他实施例中,然而,实例处理线程200由除PPN 104之外的合适处理元件来执行,和/或在除了图1的实例网络设备100之外的合适设备中执行。
在实施例中,处理线程200包括一组计算机可读指令,其由PPN 104执行以处理分组。PPN 104通过执行对应于分组处理的部分200a的线程200的一个或多个指令在时间t1处开始线程200的执行。在实施例中,部分200a包括执行针对分组的一个或多个处理操作。在时间t2处,在执行分组处理的部分200a之后,PPN 104触发第一加速引擎A,用于执行针对分组的处理操作202。结合图1,在一个示例性实施例中,在时间t2处触发的第一加速引擎A为加速引擎106a,并且操作处理202例如为用于分组的正向查找操作。在实施例中,在触发加速引擎A之后,并且在从加速引擎A接收处理操作202的结果之前,PPN 104继续分组处理,并且执行对应于分组处理的部分200b的一个或多个指令。在实施例中,部分200b包括针对分组执行一个或多个处理操作,其独立于在时间t2处触发的处理操作的结果。如图2所示,在实施例中,分组处理的部分200b由PPN 104来执行,其中处理操作202的一部分由第一加速引擎A针对分组来执行。
继续参照图2,在时间t3处,PPN 104触发第二加速引擎B用于执行针对分组的处理操作204。结合图1,在示例性实施例中,在时间t3处触发的第二加速引擎B为加速引擎106b,并且处理操作204例如为用于分组的策略查找操作。在实施例中,在触发加速引擎B之后,并且在从加速引擎B接收处理操作204的结果之前,PPN 104继续分组处理,并且执行对应于分组处理的部分200c的一个或多个指令。在实施例中,部分200c包括执行针对分组的一个或多个处理操作,其独立于在时间t3处触发的处理操作的结果。如图2所示,在实施例中,分组处理的部分200b由PPN 104来执行,并发有加速引擎A针对分组所执行的处理操作202的一部分,并且由加速引擎B针对分组执行处理操作204的一部分。
在时间t4处,PPN 104中止分组处理。例如,在实施例中,PPN 104可以不再处理分组而不从加速引擎A接收处理操作202的结果和/或从加速引擎B接收处理操作204的结果。在时间t5处,PPN 104从加速引擎A接收响应,该响应包含由加速引擎A执行的处理操作202的结果。当在t5处接收响应时,PPN 104重新开始分组处理,并且执行对应于分组处理的部分200d的一个或多个指令。在实施例中,部分200d包括基于从加速引擎A接收到的处理操作202结果执行一个或多个处理操作。如图2所示,分组处理的部分200d由PPN 104执行,并发有加速引擎B针对分组所执行的处理操作204的一部分。在时间t6处,PPN 104从加速引擎B接收响应,该响应包含由加速引擎B所执行的处理操作204结果。在实施例中,在从加速引擎B接收响应之后,PPN 104基于从加速引擎B接收到的处理操作204结果来执行针对分组的一个或多个处理操作。在时间t7处,在执行分组处理的部分200e之后,PPN 104占用第三加速引擎C,用于执行针对分组的处理操作206。在示例性实施例中,第三加速引擎C为图1的加速引擎106c,并且处理操作206例如为用于分组的最长前缀匹配查找。PPN 104通过执行对应于分组处理的部分200f的指令而继续分组处理,直到PPN 104在时间t8处占用第四加速引擎D用于执行针对分组的处理操作208。在实施例中,在时间t8处,PPN 104中止分组处理。由PPN 104执行分组上的分组处理的部分200f,并发有加速引擎C针对分组所执行的处理操作206的一部分。
在时间t9处,PPN 104从加速引擎D接收响应,该响应包含由加速引擎D执行的处理操作208的结果。在这种情况下,在所示实施例中,尽管加速引擎C相对于加速引擎D的触发在更早的时间被PPN 104触发,但PPN 104从加速引擎D接收响应而先于从加速引擎C接收响应。在实施例中,在时间t9处从加速引擎D接收响应之后,PPN 104重新开始分组处理,并且执行对应于分组处理的部分200g的一个或多个处理操作。在实施例中,在PPN 104执行分组上的分组处理的部分200g,并发有加速引擎C针对分组所执行的处理操作206的一部分。在时间t10处,PPN 104从加速引擎C接收响应,该响应包含由加速引擎C所执行的处理操作206的结果。PPN 104通过执行对应于分组处理的部分200h的一个或多个指令而继续分组处理。在实施例中,分组处理的部分200h包括基于从加速引擎C接收到的处理操作206结果而执行分组上的一个或多个指令。在时间t11处,PPN 104完成分组处理。
在至少一些实施例中,由PPN 104执行至少一些分组处理,并发有加速引擎A、B、C和D针对分组所执行的处理操作的至少一部分,这通常减少了网络设备100对分组的处理时间,从而减少了与由网络设备100处理分组相关联的延时。在至少一些实施例中,减少网络设备100处理每个分组的处理时间允许网络设备在给定时间处理更多的分组和/或允许网络设备100在给定时间段使用较少的PPN 104处理给定数量的分组。
图3为根据实施例的与图1网络设备100一起使用的引擎接入点的框图。在实施例中,EAP 300作为图1的EAP 110来使用。出于说明的目的,结合图1网络设备对实例EAP 300进行论述。在其他实施例中,然而,EAP 300用于与图1实例网络设备100不同的合适网络设备。
在实施例中,EAP 300对应于分组处理簇,并且耦合至包括在分组处理簇中的PPN104。在实施例中,EAP 300包括簇分配器单元302、簇加速引擎304和簇数据存储器306。簇分配器被配置为由分配器118分发提供给分组处理簇的分组处理。簇加速引擎304包括作为该簇局部的一个或多个加速引擎。在实施例中,加速引擎304大体类似于加速引擎106,除了加速引擎304的使用在簇内受限于PPN 104。在实施例中,加速引擎304被配置为执行不需要存储接入和/或存储查找的处理操作,而加速引擎106执行需要存储访问和/或存储查找的处理操作。例如,在实施例中,簇加速引擎304被配置为执行这样的操作,诸如簇102-1中正在处理的循环冗余校验计算和/或针对分组的其他计算。如本文所使用的,术语“加速引擎”和“外部加速引擎”包含外部加速引擎106以及簇加速引擎304。
在实施例中,簇数据存储器306在簇102-1中存储与PPN 104共有的信息。例如,在实施例中,数据存储器306在簇102-1中存储与PPN 104共有的配置信息。在实施例中,簇数据存储器306也存储由分配器118提供给簇102-1的分组,直到在实施例中分组处理被簇分配器302分发给PPN 104。在实施例中,簇数据存储器还存储相对于由PPN 104正在处理的分组所执行的处理操作的结果,直到该结果被提供给请求处理操作的PPN 104。
在实施例中,EAP 300包括简档表310。简档表310包括多个条目,其包括处理用于特定处理操作的事务的信息。例如,在实施例中,简档表310的条目包括用于生成将要发送至加速引擎106的请求的信息而用于执行特定处理操作。简要参照图4,简档表310的实例条目400包括处理用于特定类型的处理操作(例如,正向查找操作)的事务的信息。配置文件条目400包括通用信息字段402、密钥生成信息字段404和应答信息字段406。通用信息字段402包括有关事务的信息,诸如,例如,被配置为执行该事务所请求的特定类型处理操作的加速引擎106的标识符。密钥生成信息字段404包括用于生成对应于特定分组的密钥的信息,诸如与分组相关联的标题字段和/或其他数据将包括在密钥中。当在EAP 300接收到处理操作的结果时,应答信息字段406指示在何处存储该结果。例如,在实施例中,响应字段指示存储器位置(诸如位于启动事务的PPN 104的局部存储器中的存储器位置)的地址,当处理操作结果在PPN 104接收到时,该结果将被存储在该存储器位置。
参照回图3,在实施例中,为了触发加速引擎106用于执行针对分组的特定处理操作,PPN 104向EAP 300提供特定处理操作的指示。例如,PPN 104向EAP 300提供对应于特定处理操作的简档表310中条目的索引。EAP 300接收特定处理操作的指示并基于该指示(例如,使用指示作为进入包括表310的索引)访问简档表310,并且从简档表310检索需要处理与加速引擎106的事务的信息。然后,EAP 300基于从简档表310中的条目检索到的信息而生成用于处理操作的请求,并且将该请求指引到适当的加速引擎106用于执行处理操作。EAP300还被配置为从执行针对分组的处理操作的加速引擎106接收响应,该响应包含处理操作结果。在实施例中,当EAP 300接收事务结果时,EAP 300使处理操作结果写入到简档表310中条目所指示的存储器位置。
图5为根据实施例的用作图1网络设备100中的PPN 104的PPN 500的框图。出于说明的目的,结合图1的网络设备实例对PPN 500进行论述。在一些实施例中,然而,PPN 500用于与图1实例网络设备100不同的合适网络设备。
PPN 500包括处理单元502,其耦合至指令预取模块504、数据存储器506以及网络接入点(NAP)模块508。在实施例中,处理单元502为被配置为执行从一组分组处理操作中所选择的分组处理操作的处理设备。在实施例中,处理单元502为除微处理器之外的合适处理单元。在实施例中,处理单元502对应于图1的处理单元114。在实施例中,处理单元502为与图1处理单元114不同的合适处理单元。
在实施例中,分组处理单元502通过执行存储在非易失性存储器中的计算机可读指令来执行分组处理操作。指令预取模块504被配置为从存储器108加载或“预取”指令组,并且处理器模块502通过执行预取的指令来操作。在至少一些实施例中,相比于处理单元直接从存储指令的存储器读取指令的系统,预取指令组允许处理单元502更快速地执行指令。在另一个实施例中,然而,PPN 500省略了预取模块504,并且处理模块502通过直接从存储器108读取指令来操作。
在实施例中,数据存储器506存储由PPN 500正在处理的分组处理所需要的信息。例如,在实施例中,数据存储器506存储对应于由PPN 500正在处理的分组的分组描述符。此外,在实施例中,数据存储器506存储了在网络设备100对分组的处理过程中所生成的用于分组的数据。在实施例中,在网络设备100对分组的处理过程中所生成的用于分组的数据随后被处理单元使用,用于基于该数据作进一步的分组处理。例如,在实施例中,当由PPN 105从加速引擎106接收由加速引擎106执行的处理操作的结果时,数据存储器506存储该结果。
根据实施例,NAP 508被配置为与处理单元502接合并且与EAP接合,以触发加速引擎106,用于执行由处理单元502请求的针对分组的处理操作。例如,当处理单元502启动用于特定处理操作的事务时,NAP 508将特定处理操作的指示发送到EAP 300。在实施例中,然后EAP 300使用特定处理操作的指示作为进入简档表310的索引来访问简档表310,并且基于从简档表310检索到的信息来生成用于特定处理操作的请求。实际上,在实施例中,处理单元502将处理操作的请求生成卸载到EAP 300。在实施例中,在启动事务之后,处理单元502继续分组处理。在实施例中,处理单元502执行分组上的一个或多个处理操作,在实施例中并发有加速引擎106针对分组所执行的特定处理操作的请求生成。在实施例中,NAP 508还被配置为接收由加速引擎106执行的处理操作结果,并且将该结果提供给处理单元502。
根据实施例,NAP 508支持多个并行或并发挂起的由处理单元502启动的事务。NAP508包括多个信道509和用于管理事务的事务管理器510,多个信道509用于实施与加速引擎106的多个并行事务。事务管理器510被配置为将信道标识符(ID)512指派给由处理单元502启动的事务,并且将所指派的信道ID提供给处理单元502。在实施例中,处理单元502被配置为随后使用指派给事务的信道ID来获得对应于事务的处理操作结果。
在实施例中,为了启动用于特定处理操作的事务,处理单元502向NAP 508提供特定处理操作的指示。例如,处理单元502向处理单元502提供对应于特定处理操作的简档表(如简档表310)中的条目的指示(例如,索引)。在实施例中,处理单元502启动事务,并且通过对NAP 508发布加载命令并且在加载命令的地址字段中包括特定处理操作的指示而提供事务请求的处理操作指示。响应于发布加载命令,处理单元502从NAP 508加载对应于事务的信道ID。例如,在实施例中,NAP 508包括信道寄存器514。NAP 508将可用的信道ID填入寄存器514。在实施例中,响应于发布加载命令以启动事务,处理单元502从信道寄存器514加载信道ID,并且使信道ID与事务相关联。
在实施例中,使用用于启动请求的加载命令允许处理单元502通过向NAP 508提供所请求的处理操作指示而并发地(例如,在相同的时钟周期内)启动事务,并且从NAP 508接收用于事务的信道ID。在至少一些实施例中,在相同的时钟周期期间启动事务并且接收对应于事务的信道ID消除了用于向处理单元502提供信道ID的任何额外时钟周期,如果,例如,写入命令正在用于启动事务,将需要所述额外时钟周期。另外,在至少一些实施例中,根据处理单元502的指令管线架构,加载、读取指令相对于例如存储、写入指令在管线架构的较早阶段发布。在这样的实施例中,使用加载命令来启动事务,而非例如使用写入命令来启动事务,导致命令在处理单元502的较早时钟周期期间正在发布。
因此,在至少一些实施例中,由于(i)在处理单元502接收对应于事务的信道ID并发有处理单元502对事务的启动和(ii)根据处理单元502的指令管线架构的事务的较早启动中的一者或两者,在分组处理过程中使用加载(或读取)命令而非例如存储(或写入)命令来启动事务减少了与分组处理相关联的延时。在至少一些实施例中,与分组处理相关联的延时的减少是显著的,特别是在多个事务在分组处理过程中被启动的时候。与PPN 500对每个分组的处理相关联的延时的减少转而允许PPN 500在给定时间段处理更大数量的分组(例如,通过增加PPN 500在给定时间所处理的并行处理语境的数量),和/或减少了网络设备100所需的分组处理节点的数量,以支持由网络设备100引入到通信量内的给定最大延时。在至少一些实例中,减少网络设备100中的分组处理节点数量转而减少了分组处理器101所占据的面积以及网络设备100的分组处理器101所消耗的功率。
在一些实施例中,根据处理单元502的指令管线架构,处理单元502在一些情况下发布推测加载(speculative load)。在实施例中,处理单元502发布推测加载命令,并且通过发布推测加载命令无意地启动事务。在至少一些实施例中,处理单元502被配置为在事务无意地被处理单元502经由推测加载命令启动的情况下而终止事务。
在实施例中,事务管理器510中的每个信道ID 512是与状态514相关联的。当信道512被指派给事务时,事务管理器510通过设定与指派的信道ID 512相关联的状态512而“锁定”信道512,以指示信道ID是“忙碌”的。随后,当处理操作结果由PPN 500接收到并且至少部分地被写入到PPN 500的数据存储器506时,事务管理器510通过更新与信道512相关联的状态514而释放信道512,以指示信道512是“可用”的。在本实施例中,指派给事务的信道512的忙碌状态514指示信道512被锁定,并且事务的结果尚不可以用于被处理单元502检索。在另一方面,指派给事务的信道512的可用状态514指示信道512被释放,并且事务的结果可以用于被处理单元502检索。
在实施例中,当处理单元502尝试检索特定事务的结果时,处理单元502向NAP 508发布加载命令,其中该加载命令在加载命令的地址字段中指示(i)对应于事务的信道ID和(ii)数据存储器506中的存储器位置(以从中检索事务结果)的地址。在实施例中,处理单元502对存储器的位置(事务的结果将要从中检索)的地址预挂起(prepends)对应于事务的信道ID,并且向NAP 508提供对存储器位置的地址预挂起的信道ID。例如,在实施例中,加载命令的地址字段包括对存储器位置预挂起的信道ID。因此,在本实施例中,加载命令的地址字段的最高有效位(MSB)中的一个或多个对应于事务的信道ID,而其余的或最低有效位(LSB)对应于数据存储器506中的存储器位置,将要从该存储器位置中检索对应的处理操作结果。
在实施例中,NAP 508基于加载命令的地址字段中所指示的信道ID来接收加载命令并且确定对应的处理操作结果是否可以用于从数据存储器506检索。在实施例中,NAP508将加载命令中所指示的信道ID映射到信道512,并且检验与信道512相关联的状态514。如果信道512的状态514设定为可用而指示结果,那么NAP 508启动结果从加载命令中指示的存储器位置到处理单元502的转移。在实施例中,处理单元502读取结果,并且基于结果继续分组处理。在另一方面,如果状态514指示信道512当前为忙碌的,那么NAP 508不启动上述转移,直到信道512的状态514更新成指示信道512是可用的。由于处理单元502发布了加载命令,但是还未接收加载命令所请求的数据,因此处理单元502被迫等待,直到处理操作的结果变得可以用于被处理单元502检索。实际上,在实施例中,通过不启动从数据存储器506的转移,NAP 508“锁定”处理单元502,并且处理单元502对分组的处理被中止。因此,在实施例中,通过发布加载命令来启动事务结果的检索,如果事务的结果尚不可以用于被处理单元502检索,处理单元502则自动中止分组处理。然后,当信道512的状态514更新成指示信道512为可用时(即,当事务的结果在数据存储器506中变得可用时),NAP 508启动结果从数据存储器506的转移。因此,在实施例中,由加载命令所请求的数据(即,处理操作的结果)被处理单元502加载,并且处理单元502被“锁定”。在实施例中,然后处理单元502基于所检索的处理操作结果重新开始分组处理。
在实施例中,NAP 508可被配置为以全锁定模式或半锁定模式操作。在全锁定模式中,当在PPN 500已经接收到对事务的全部响应并且处理操作的全部结果已被写入到数据存储器506时,NAP 508释放指派给事务的信道ID。因此,在本实施例中,如果处理单元502被锁定尝试从数据存储器506检索处理操作的结果,处理单元502的操作在全部结果可以用于从数据存储器506检索时重新开始。在半锁定模式中,在另一方面,当仅有对事务的响应的一部分已被接收和/或仅有事务结果的一部分已被写入到数据存储器506时,NAP 508释放指派给事务的信道ID。例如,在对应于响应的数据的第一分段已被PPN 500接收之后和/或第一分段已被写入到数据存储器506之后,NAP 508释放指派给事务的信道ID。在这种情况下,如果处理单元502被锁定尝试从数据存储器506检索事务结果,处理单元502的操作在仅有处理操作结果的一部分(例如,第一分段)可以用于从数据存储器506检索之后重新开始。在实施例中,在这种情况下,结果的可用部分被处理单元502加载。在实施例中,然后处理单元502基于所检索的结果部分开始分组处理。半锁定模式在至少一些情况下是有用的,其中接收事务结果和/或将事务结果写入到数据存储器506在一个以上的时钟周期内被执行。例如,在实施例中,在对分组分发引擎106的事务的情况下,对于将要被分发至PPN 500的新分组,对事务的响应包括加载对应于新分组的新分组标题和/或分组描述符。在实施例中,新分组的标题和/或分组描述符可能耗用几个时钟周期来被PPN 500接收和/或写入到数据存储器506。在实施例中,为了允许处理单元502在全部响应被PPN 500接收和/或写入到数据存储器506之前开始执行分组处理,NAP 508被配置为在这种情况下以半锁定模式操作。
在实施例中,事务510被配置为在事务结果或事务结果的一部分变得可以用于从数据存储器506检索时自动释放指派给事务的信道ID 512。例如,事务管理器510被配置为释放信道ID 512而无需来自处理单元512的这么做的指令。因此,在实施例中,当处理单元502尝试从数据存储器506检索事务结果时,如果事务结果已经可以用于从数据存储器506检索,该结果在相同的时钟周期期间自动提供给处理单元502。在本实施例和方案中,(i)发布加载命令以获得事务结果、(ii)确定事务结果在存储器506中是可用的以及(iii)启动结果向处理单元502的转移都在相同的时钟周期期间被执行。进一步地,如果事务结果在处理单元502尝试检索结果时还不是可用的,并且处理单元502在等待结果变得可用的过程中被锁定,所述结果在该结果在数据存储器502中变得可用时(例如,在结果变得可用的相同时钟周期期间)自动提供给处理单元502。因此,在本实施例和方案中,(ii)确定事务结果在存储器506中是可用的以及(iii)启动结果向处理单元502的转移在相同的时钟周期期间发生。
在实施例中,事务管理器510中的信道ID 512数量对应于NAP 508中的信道509数量,并且因此对应于NAP 508所支持的并发挂起请求的数量。在本实施中,由于事务管理器510在事务结果在数据存储器506中变得可用时自动释放对应于事务的信道ID,因此事务管理器510能够释放指派给事务A的信道ID,并且在事务A的结果被处理单元502检索到之前对后续的事务B重新指派信道ID。在这种情况下,当处理单元502随后尝试检索事务A的结果时,处理单元502不一定被NAP 580锁定,这是因为对应的信道ID现被锁定用于事务B。例如,在实例方案中,处理单元502启动事务A并且从NAP 508接收指派给事务A的信道ID 512(例如,信道512b)。在本方案中,事务管理器510锁定指派给事务A的信道ID 512b。然后,当事务A的结果被PPN 500接收并且写入到数据存储器506时,事务管理器510释放信道512b,并且,然后对随后由处理单元502启动的事务B重新指派信道ID 512b。在实施例中,然后事务管理器510锁定信道512b,以指示第二事务的结果不可以用于从数据存储器506检索。然后,在本实例方案中,在后来的时间,当处理单元502尝试检索事务A的结果时,NAP 508基于信道512a的当前状态锁定处理单元502,尽管第一处理操作的结果可以用于从数据存储器506检索。
在一些实施例中,为了减少这种情况的可能性或为了消除这种情况,事务管理器510包括若干个信道ID 512,其超过了NAP 508中的信道509数量,并且因此超过了并发挂起的由处理单元502启动的事务的数量。例如,在实例实施例中,NAP 508包括X个信道509,并且因此支持X个并发挂起的由处理单元502启动的事务,而事务管理器510包括N*X个信道ID512。具有超过信道512数量的若干个信道ID 509增加了信道512被事务管理器510释放的时间与信道512被重新指派给处理单元502启动的后续事务的时间之间的时间量(例如,时钟周期的数量)。在至少一些实施例中,具有超过信道509数量的若干个信道ID 512减少或消除了这样的可能性,即处理单元502在对应于第一事务的信道ID 512被重新指派给第二事务时尚未对信道ID 512请求第一事务结果。
在至少一些实施例中,信道ID 512中的一个(例如,CH-ID0)保留用于从数据存储器506的“非锁定”检索。在本实施例中,保留的信道ID不指派给事务,并且对应于所保留的信道ID 512的状态514设定成是“可用”的。在实施例中,为了启动从数据存储器506中的存储器位置对数据的非锁定检索,处理单元502向NAP 508发布加载命令,其中该加载命令在加载命令的地址字段中包括保留的信道ID和存储器位置的地址。在实施例中,由于在事务管理器510中所保留的信道ID 512的状态514指示信道ID是可用的,当NAP 508接收加载命令时,NAP 508在与接收加载命令相同的时钟周期期间启动由加载命令所指示的数据从存储器位置到处理单元502的转移而未锁定处理单元502。
在一些实施例中,除了处理单元502尝试检索特定事务结果的模式之外或代替该模式,NAP 508还支持轮询模式。在轮询模式中,处理单元502轮询对应于挂起事务的锁定信道ID 512的状态,以确定信道ID 512中的一个被释放,而非尝试检索特定挂起事务的结果。在实施例中,当确定了锁定信道ID 512中的一个被释放时,处理单元502从数据存储器506检索对应事务的结果。在实施例中,然后处理单元502基于实施例中的事务结果继续分组处理。
图6为根据实施例的用于在包括至少一个分组处理节点和多个加速引擎的网络设备中处理分组的实例方法600的流程图。方法600在实施例中通过图1的网络设备100来实施。在其他实施例中,方法600通过另一种合适的网络设备来实施。
在方框602处,分组处理节点执行分组上的一个或多个处理操作。在实施例中,分组处理节点被配置为执行多个不同分组处理操作,其至少包括第一分组处理操作和第二分组处理操作,第二分组处理操作与第一分组处理操作不同。
在方框604处,分组处理节点触发加速引擎用于执行针对分组的第一附加处理操作。在实施例中,第一附加处理操作构成与分组处理节点被配置成执行的多个不同处理操作不同的操作。
在方框606处,第一附加处理操作由在方框604处触发的加速引擎针对分组来执行。在方框610处,与在方框606处、在方框604处触发的加速引擎执行针对分组的第一附加处理操作并发地,分组处理节点执行分组上的第二附加处理操作的至少一部分。在实施例中,第二附加处理操作独立于第一附加处理操作的结果。
图7为根据实施例的用于在包括至少一个分组处理节点和多个加速引擎的网络设备中处理分组的另一实例方法700的流程图。方法700在实施例中通过图1的网络设备100来实施。在其他实施例中,方法700通过另一种合适的网络设备来实施。
在方框702处,分组处理节点的处理单元启动与加速引擎的事务,以触发加速引擎用于执行针对分组的第一处理操作。在方框704处,加速引擎被触发用于执行对应于在方框702处启动的事务的处理操作。
在方框706处,处理单元尝试从存储器位置检索处理操作结果,当在分组处理节点从在方框704处触发的加速引擎接收到结果时,应该在所述存储器位置写入该结果。在方框708处,响应于在方框706处尝试检索处理操作结果,确定了处理操作结果是否可以用于被处理单元检索。例如,在方框708处确定了处理操作结果已被写入到存储器位置。
如果在方框708处确定了结果可以用于被处理单元检索,所述方法继续进行到方框710,在此由处理单元启动结果的检索。在另一方面,当确定了在方框708处结果不可以用于被处理单元检索,诸如当结果尚未被写入到存储器位置时,例如,由于结果尚未从方框704处触发的加速引擎接收到时,所述方法继续进行到方框712,在此处理单元被锁定。在实施例中,处理单元在方框712处被锁定,直到结果的至少一部分可以用于被处理单元检索。然后,当结果的至少一部分变得可以用于被处理单元检索时,诸如当结果的至少一部分被处理单元接收并且写入到存储器位置时,在方框714处启动对结果的检索。
在实施例中,一种用于在包括至少一个分组处理节点和多个加速引擎的网络设备中处理分组的方法包括在分组处理节点处执行针对分组的一个或多个处理操作,分组处理节点被配置为执行针对分组的多个不同处理操作。该方法还包括触发第一加速引擎以用于执行针对分组的第一附加处理操作,其中第一附加处理操作构成与分组处理节点被配置成执行的多个不同处理操作不同的操作。该方法进一步包括由第一加速引擎执行第一附加处理操作。该方法另外包括:与在第一加速引擎处执行第一附加处理操作并发地,由分组处理节点执行针对分组的第二附加处理操作的至少一部分,其中第二附加处理操作不依赖于第一附加操作处理的结果。
在其他实施例中,该方法包括以下特征中的一个或多个特征中的任何一个或任何组合。
该方法还包括:在由第一加速引擎完成第一附加处理操作之前,触发第二加速引擎以用于执行针对分组的第三附加处理操作,其中第三附加处理操作构成与分组处理节点被配置成执行的多个不同处理操作不同的操作。
该方法进一步包括:与由第一加速引擎执行第一附加处理操作的至少一部分并发地,由第二加速引擎执行分组上的第三附加处理操作,包括执行第三附加处理操作的至少一部分。
该方法进一步包括:在至少执行针对分组的第二附加处理操作之后,在没有第一附加处理操作的结果的情况下,当在分组处理节点处没有针对分组的附加处理可以被执行时,中止在分组处理节点对分组的处理。
该方法进一步包括:在分组处理节点处从第一加速引擎接收第一附加处理操作的结果,响应于接收第一附加处理操作的结果,重新开始分组处理节点对分组的处理,以及基于第一附加处理操作的结果执行针对分组的一个或多个进一步的处理操作。
分组处理节点包括处理单元,其被配置为执行存储在非易失性存储器中的计算机可读指令。
触发第一加速引擎以用于执行针对分组的第一附加处理操作包括由处理单元发布加载命令,其中该加载命令(i)提供第一附加处理操作的指示以及(ii)请求对应于信道的信道标识符(ID),该信道用于实施与用于执行第一附加处理操作的第一加速引擎的事务,响应于发布加载命令,在处理单元加载对应于信道的信道标识符(ID),该信道用于实施与第一加速引擎的事务,并且锁定信道ID,以指示第一附加处理操作的结果不可以用于被处理单元检索。
加载命令在该加载命令的地址字段中包括对应于简档表中的条目的标识符,其中简档表中的条目包括用于对第一加速引擎生成请求的信息。
触发第一加速引擎进一步包括:基于对应于简档表中的条目的标识符访问简档表,从简档表的条目中检索用于对第一加速引擎生成请求的信息,基于所检索的信息生成请求,以及将请求发送至第一加速引擎。
该方法进一步包括:在分组处理节点接收第一加速引擎执行的第一处理操作的结果,并且响应于接收第一附加处理操作的结果,释放信道ID,以指示第一附加处理操作的结果可以用于被处理单元检索。
简档表中的条目进一步包括用于存储第一处理操作结果的存储器位置的地址,并且其中该方法进一步包括将第一处理操作结果写入到第一存储器位置。
用于启动触发第一加速引擎的加载命令为第一加载命令。
该方法进一步包括:由处理单元发布第一加载命令以从第一存储器位置检索数据,其中第二加载命令在第二加载命令的地址字段中包括(i)信道ID和(ii)第一存储器位置的地址,确定信道ID已被释放,以及当确定了信道ID已被释放时,使来自第一存储器位置的数据被加载到处理单元。
释放信道ID、确定信道ID已被释放以及检索结果的至少一部分在相同的时钟周期期间被执行。
在另一个实施例中,网络设备包括多个网络端口,其被配置为在网络上接收和传输分组。该网络设备还包括至少一个分组处理节点,其被配置为执行针对分组的多个不同处理操作。该网络设备进一步包括多个加速引擎,其至少包括被配置为执行第一附加处理操作的第一加速引擎,其中第一附加处理操作构成与分组处理节点被配置成执行的多个不同处理操作不同的操作。至少一个分组处理节点被配置为:执行分组上的一个或多个处理操作,触发第一加速引擎以用于执行针对分组的第一附加处理操作,以及与由第一加速引擎针对分组所执行的第一处理操作并发地,执行针对分组的第二附加处理操作的至少一部分,其中第二附加处理操作不依赖于第一附加处理操作的结果。
在其他实施例中,网络设备包括以下特征中的一个或多个特征中任何一个或任何组合。
分组处理节点进一步被配置为:在由第一加速引擎完成第一附加处理操作之前,触发多个加速引擎中的第二加速引擎,用于执行分组上的第三附加处理操作,其中第三附加处理操作构成与分组处理节点被配置成执行的多个不同处理操作不同的操作。
与由第一加速引擎所执行的第一附加处理操作的至少一部分并发地,由第二加速引擎执行第三附加处理操作的至少一部分。
分组处理节点进一步被配置为:在至少执行针对分组的第二附加处理操作之后,没有第一附加处理操作的结果的情况下,当在分组处理节点处没有分组上的附加处理可以被执行时,中止在分组处理节点对分组的处理。
分组处理节点进一步被配置为:从第一加速引擎接收第一附加处理操作的结果,重新开始分组处理,以及基于第一附加处理操作的结果执行针对分组的一个或多个进一步的处理操作。
分组处理节点包括处理单元,其被配置为执行存储在非易失性存储器中的计算机可读指令。
分组处理节点被配置为通过从处理单元发布加载命令来启动触发第一加速引擎,其中该加载命令(i)提供第一附加处理操作的指示以及(ii)请求对应于信道的信道标识符(ID),该信道用于实施与用于执行第一附加处理操作的第一加速引擎的事务,响应于发布加载命令,在处理单元加载对应于信道的信道标识符,该信道用于实施与用于执行第一附加处理操作的第一加速引擎的事务,以及锁定信道ID,以指示第一附加处理操作的结果可以用于被处理单元检索。
由处理单元发布的加载命令在加载命令的地址字段中包括对应于简档表中的条目的标识符,其中简档表中的条目包括用于对第一加速引擎生成请求的信息。
触发第一加速引擎用于执行分组上的第一附加处理操作包括:基于对应于简档表中的条目的标识符访问简档表,从简档表的条目中检索用于对第一加速引擎生成请求的信息,基于所检索的信息生成请求,以及将请求发送到第一加速引擎。
分组处理节点进一步被配置为:接收由第一加速引擎执行的第一处理操作的结果,并且响应于接收第一处理操作的结果,释放信道ID,以指示第一附加处理操作的结果可以用于被处理单元检索。
简档表中的条目进一步包括用于存储第一处理操作结果的存储器位置的地址,并且其中分组处理节点进一步被配置为将第一处理操作结果写入到第一存储器位置。
用于启动触发第一加速引擎的加载命令为第一加载命令。
处理单元进一步被配置为发布以从第一存储器位置检索数据的第二加载命令,其中第二加载命令在第二加载命令的地址字段中包括(i)信道ID和(ii)第一存储器位置的地址。
分组处理节点进一步被配置为:确定信道ID是否已被释放,以及当确定了信道ID已被释放时,使来自第一存储器位置的数据被加载到处理单元。
分组处理节点被配置为在相同的时钟周期期间(i)释放信道ID、(ii)确定信道ID已被释放以及(iii)使来自第一存储器位置的数据将要被加载到处理单元。
在又一个实施例中,用于在包括至少一个分组处理节点和多个加速引擎的网络设备中处理分组的方法包括:由分组处理节点的处理单元启动与第一加速引擎的事务,以触发第一加速引擎用于执行针对分组的第一处理操作。该方法还包括触发第一加速引擎用于执行针对分组的第一处理操作。该方法进一步包括当第一处理操作的结果从第一加速引擎接收到时,尝试从第一存储器位置检索第一处理操作的结果,第一处理操作的结果预期被写入第一存储器位置。该方法另外包括:响应于尝试从第一存储器位置检索第一处理操作的结果,确定该结果是否已被写入到第一存储器位置。当确定了结果已被写入到第一存储器位置时,该方法包括由处理单元启动从第一存储器位置对结果的检索。当确定了结果尚未被写入到第一存储器位置时,该方法包括锁定处理单元直到结果的至少一部分被写入第一存储器位置,并且当结果的至少一部分已被写入到第一存储器位置时,由处理单元启动从第一存储器位置对结果的检索。
在其他实施例中,该方法包括以下特征中的一个或多个特征中的任何一个或任何组合。
触发第一加速引擎以用于执行第一处理操作的包括:向第一事务指派第一信道标识符(ID),第一信道ID对应于用于实施第一事务的信道,以及锁定第一信道ID以指示第一处理操作的结果尚未被写入到存储器位置。
该方法进一步包括:从第一加速引擎接收第一处理操作的结果,将第一处理操作的结果写入到第一存储器位置,以及释放第一信道ID以指示第一处理操作的结果已被写入到第一存储器位置。
尝试从第一存储器位置检索第一处理操作的结果包括发布加载命令,其中该加载命令在加载命令的地址字段中包括(i)第一信道ID和(ii)第存储器位置的地址,并且确定结果已被写入到第一存储器位置包括:从加载命令的地址字段获取第一信道ID,以及基于所获得的第一信道ID进行确定。
确定第一处理操作的结果已被写入到第一存储器位置包括:确定第一信道ID的状态,该第一信道ID的状态指示了第一处理操作的结果可以用于被处理单元检索。
确定第一处理操作的结果已被写入到第一存储器位置以及启动从第一存储器位置对结果的检索在相同的时钟周期期间被执行。
该方法进一步包括:启动与用于执行第二处理操作的第二加速引擎的第二事务,第二处理操作与分组处理节点被配置成执行的多个不同处理操作不同,以及触发第二加速引擎用于执行针对分组的第二处理操作,其中尝试检索第一处理操作结果在触发用于执行第二处理操作的第二加速引擎之后执行。
该方法进一步包括尝试从存储器位置检索第二处理操作的结果,当第二处理操作的结果从第二加速引擎接收到时,第二处理操作的结果预期被写入存储器位置,包括:在尝试检索第一处理操作的结果之前尝试检索第二处理操作的结果,并且响应于从第二存储器位置检索第二处理操作的结果,确定第二处理操作的结果是否已被写入到第二存储器位置,并且当确定了结果已被写入到第二存储器位置时,启动从第二存储器位置对结果的检索,以及当确定了结果尚未被写入到第二存储器位置时,锁定处理单元,直到第二处理操作的结果的至少一部分被写入第二存储器位置,并且随后,当第二处理操作的结果的至少一部分已被写入到第二存储器位置时,由处理单元启动从第二存储器位置对第二处理操作结果的检索。
锁定处理单元直到结果的至少一部分被写入到第一存储器位置包括锁定处理单元直到全部结果已被写入到存储器位置。
锁定处理单元直到结果的至少一部分被写入到第一存储器位置包括锁定处理单元直到仅有结果的多个分段中的第一分段已被写入到存储器位置。
在另一个实施例中,网络设备包括多个网络端口,其被配置为在网络上接收和传输分组。网络设备还包括至少一个分组处理节点,其被配置为执行针对分组的多个不同分组处理操作。该网络设备另外包括多个加速引擎,其至少包括被配置为执行第一处理操作的第一加速引擎,其中第一处理操作构成与分组处理节点被配置成执行的多个不同处理操作不同的操作。分组处理节点包括处理单元,其被配置为对第一加速引擎启动第一事务用于执行分组上的第一处理操作,并且在启动第一事务之后,当第一处理操作的结果从第一加速引擎接收到时,尝试从第一存储器位置检索第一处理操作的结果,第一处理操作的结果预期被写入第一存储器位置。分组处理节点被配置为使第一加速引擎将要被触发用于执行针对分组的第一处理操作。分组处理节点还被配置为:在使第一加速引擎将要被触发用于执行第一处理操作之后,并且响应于尝试由处理单元检索第一处理操作的结果,确定结果是否已被写入到第一存储器位置。分组处理节点进一步被配置为:当确定了结果已被写入到第一存储器位置时,由处理单元启动从第一存储器位置对结果的检索,以及当确定了结果尚未被写入到第一存储器位置时,锁定处理单元直到结果的至少一部分被写入到第一存储器位置,并且随后,当结果的至少一部分已被写入到第一存储器位置时,由处理单元启动从第一存储器位置对结果的检索。
在其他实施例中,网络设备包括以下特征中的一个或多个特征中的任何一个或任何组合。
分组处理节点进一步被配置为:将对应于用于实施第一事务的信道的信道标识符(ID)指派给第一处理操作,以及锁定第一信道ID,以指示第一处理操作的结果尚未被写入到存储器位置。
分组处理节点进一步被配置为:从第一加速引擎接收第一处理操作的结果,将第一处理操作的结果写入到第一存储器位置,以及释放第一信道ID以指示第一处理操作的结果可以用于被处理单元检索。
处理单元被配置为至少通过发布加载命令而尝试从第一存储器位置检索第一处理操作的结果,其中该加载命令在地址字段中包括(i)第一信道ID和(ii)存储器位置的地址。
分组处理节点被配置为:从加载命令的地址字段中获取第一信道ID,以及基于所获得的信道ID确定结果已被写入到存储器位置。
分组处理节点被配置为:至少通过确定第一信道ID的状态而基于所获得的信道ID来确定结果已被写入到存储器位置,该第一信道ID的状态指示第一处理操作可以用于被处理单元检索。
确定第一处理操作的结果已被写入到存储器位置以及启动从存储器位置对结果的检索在相同的时钟周期期间被执行。
处理单元进一步被配置为启动与多个加速引擎中的第二加速引擎的第二事务,用于第二处理操作的第二事务将要由第二处理引擎针对分组来执行。
分组处理节点进一步被配置为使第二加速引擎被触发用于执行针对分组的第二处理操作。
尝试检索第一处理操作的结果在触发用于执行第二处理操作的第二加速引擎之后执行。
处理单元进一步被配置为在尝试检索第一处理操作的结果之前,当第二处理操作的结果从第二加速引擎接收到时,尝试从第二存储器位置检索第二处理操作的结果,第二处理操作的结果预期被写入第二存储器位置。
分组处理节点被配置为:响应于由处理单元尝试从第二存储器位置接收第二处理操作的结果,确定第二处理操作的结果是否已被写入到第二存储器位置,并且当确定了结果已被写入到第二存储器位置时,启动从第二存储器位置对结果的检索,以及当确定了结果尚未被写入到第二存储器位置时,锁定处理单元直到第二处理操作的结果的至少一部分被写入到存储器位置,并且随后,当第二处理操作的结果的至少一部分已被写入到第二存储器位置时,启动从第二存储器位置对第二处理操作结果的检索。
分组处理节点被配置为:当确定了第一处理操作的结果尚未被写入到第一存储器位置时,锁定处理单元直到第一处理操作的全部结果已被写入到存储器位置。
锁定处理单元直到结果的至少一部分被写入到第一存储器位置包括锁定处理单元直到仅有结果的多个分段中的第一分段已被写入到存储器位置。
以上所述的各个方框中的至少一些、操作和技术可以利用硬件、执行固件指令的处理器、执行软件指令的处理器或其任意组合来实施。当利用执行软件或固件指令的处理器来实施时,软件或固件指令可以存储在任何计算机可读介质中,诸如磁盘、光盘、RAM或ROM或闪速存储器等等。软件或固件指令可以包括机器可读指令,当其被处理器执行时,使处理器执行各种行为。
当以硬件实施时,硬件可以包括离散组件、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)等中的一个或多个。
虽然已结合特定实例描述了本发明,但这些实例仅意图说明而并非要限制本发明,对于本领域的普通技术人员将显而易见的是,可以对公开的实施例进行改变、增加和/或删除而不脱离本发明的精神和范围。

Claims (20)

1.一种用于在网络设备中处理分组的方法,所述网络设备包括至少一个分组处理节点和多个加速引擎,所述方法包括:
在所述分组处理节点处执行针对分组的一个或多个处理操作,所述分组处理节点被配置为执行针对所述分组的多个不同处理操作;
触发第一加速引擎,以用于执行针对所述分组的第一附加处理操作,其中所述第一附加处理操作构成与所述分组处理节点被配置成执行的所述多个不同处理操作不同的操作;
由所述第一加速引擎执行所述第一附加处理操作;以及
与在所述第一加速引擎处执行所述第一附加处理操作并发地,由所述分组处理节点执行针对所述分组的第二附加处理操作的至少一部分,其中所述第二附加处理操作不依赖于所述第一附加处理操作的结果。
2.根据权利要求1所述的方法,进一步包括:
在由所述第一加速引擎完成所述第一附加处理操作之前,触发第二加速引擎以用于执行针对所述分组的第三附加处理操作,其中所述第三附加处理操作构成与所述分组处理节点被配置成执行的所述多个不同处理操作不同的操作;以及
由所述第二加速引擎在所述分组上执行所述第三附加处理操作,包括与由所述第一加速引擎执行所述第一附加处理操作的至少一部分并发地执行所述第三附加处理操作的至少一部分。
3.根据权利要求1所述的方法,进一步包括:在至少执行针对所述分组的所述第二附加处理操作之后,在没有所述第一附加处理操作的结果的情况下,当在所述分组处理节点处没有针对所述分组的附加处理可以被执行时,中止在所述分组处理节点对所述分组的处理。
4.根据权利要求3所述的方法,进一步包括:
在所述分组处理节点处从所述第一加速引擎接收所述第一附加处理操作的所述结果;
响应于接收所述第一附加处理操作的所述结果,重新开始所述分组处理节点对所述分组的处理;以及
基于所述第一附加处理操作的所述结果在所述分组处理节点处执行针对所述分组的一个或多个进一步的处理操作。
5.根据权利要求1所述的方法,其中所述分组处理节点包括处理单元,所述处理单元被配置为执行存储在非易失性存储器中的计算机可读指令,并且其中触发所述第一加速引擎以用于执行针对所述分组的所述第一附加处理操作包括:
由所述处理单元发布加载命令,其中所述加载命令(i)提供所述第一附加处理操作的指示以及(ii)请求对应于信道的信道标识符ID,所述信道用于实施与用于执行所述第一附加处理操作的所述第一加速引擎的事务;
响应于发布加载命令,在所述处理单元处加载对应于所述信道的所述标识符ID,所述信道用于实施与所述第一加速引擎的事务;以及
锁定所述信道ID,以指示所述第一附加处理操作的结果不可以用于被所述处理单元检索。
6.根据权利要求5所述的方法,其中所述加载命令在所述加载命令的地址字段中包括对应于简档表中的条目的标识符,其中所述简档表中的所述条目包括用于对所述第一加速引擎生成请求的信息,并且其中触发所述第一加速引擎进一步包括:
基于对应于所述简档表中的所述条目的所述标识符访问所述简档表;
从所述简档表的所述条目中检索用于对所述第一加速引擎生成请求的信息,
基于所检索的信息生成所述请求;以及
向所述第一加速引擎发送所述请求。
7.根据权利要求6所述的方法,进一步包括:
在所述分组处理节点接收由所述第一加速引擎执行的所述第一附加处理操作的所述结果;以及
响应于接收所述第一附加处理操作的所述结果,释放所述信道ID,以指示所述第一附加处理操作的所述结果可以用于被所述处理单元检索。
8.根据权利要求7所述的方法,其中所述简档表中的所述条目进一步包括用于存储所述第一附加处理操作的所述结果的第一存储器位置的地址,并且其中所述方法进一步包括将所述第一附加处理操作的所述结果写入到第一存储器位置。
9.根据权利要求8所述的方法,其中用于启动触发所述第一加速引擎的所述加载命令为第一加载命令,并且其中所述方法进一步包括:
由所述处理单元发布第二加载命令,以从所述第一存储器位置检索数据,其中所述第二加载命令在所述第二加载命令的地址字段中包括(i)信道ID和(ii)所述第一存储器位置的所述地址;
确定所述信道ID是否已被释放;以及
当确定了所述信道ID已被释放时,使来自所述第一存储器位置的数据被加载到所述处理单元。
10.根据权利要求9所述的方法,其中在相同的时钟周期期间执行(i)释放所述信道ID、(ii)确定所述信道ID已被释放以及(iii)检索所述结果的至少一部分。
11.一种网络设备,包括:
多个网络端口,被配置为在网络上接收和传输分组;
至少一个分组处理节点,被配置为执行针对所述分组的多个不同分组处理操作;以及
多个加速引擎,至少包括被配置为执行第一附加处理操作的第一加速引擎,其中所述第一附加处理操作构成与所述分组处理节点被配置成执行的所述多个不同分组处理操作不同的操作,
其中所述至少一个分组处理节点被配置为:
在所述分组上执行一个或多个处理操作;
触发所述第一加速引擎以用于执行针对所述分组的所述第一附加处理操作;以及
与由所述第一加速引擎针对所述分组所执行的所述第一附加处理操作并发地,执行针对所述分组的第二附加处理操作的至少一部分,其中所述第二附加处理操作不依赖于所述第一附加处理操作的结果。
12.根据权利要求11所述的网络设备,其中所述分组处理节点进一步被配置为:
在由所述第一加速引擎完成所述第一附加处理操作之前,触发所述多个加速引擎中的第二加速引擎,用于在所述分组上执行第三附加处理操作,其中所述第三附加处理操作构成与所述分组处理节点被配置成执行的所述多个不同分组处理操作不同的操作;并且
其中与由所述第一加速引擎所执行的所述第一附加处理操作的至少一部分并发地,由所述第二加速引擎执行所述第三附加处理操作的至少一部分。
13.根据权利要求11所述的网络设备,其中所述分组处理节点进一步被配置为:在至少执行针对所述分组的所述第二附加处理操作之后,在没有所述第一附加处理操作的结果的情况下,当在所述分组处理节点处没有所述分组上的附加处理可以被执行时,中止在所述分组处理节点对所述分组的处理。
14.根据权利要求13所述的网络设备,其中所述分组处理节点进一步被配置为:
从所述第一加速引擎接收所述第一附加处理操作的所述结果;
重新开始所述分组的处理;以及
基于所述第一附加处理操作的所述结果执行针对所述分组的一个或多个进一步的处理操作。
15.根据权利要求11所述的网络设备,其中所述分组处理节点包括处理单元,所述处理单元被配置为执行存储在非易失性存储器中的计算机可读指令,并且其中所述分组处理节点被配置为:
通过从所述处理单元发布加载命令启动触发所述第一加速引擎,其中所述加载命令(i)提供所述第一附加处理操作的指示以及(ii)请求对应于信道的信道标识符ID,所述信道用于实施与用于执行所述第一附加处理操作的所述第一加速引擎的事务;以及
响应于发布加载命令,
在所述处理单元加载对应于所述信道的所述信道标识符ID,所述信道用于实施与用于执行所述第一附加处理操作的所述第一加速引擎的事务;以及
锁定所述信道ID,以指示所述第一附加处理操作的所述结果不可以用于被所述处理单元检索。
16.根据权利要求15所述的网络设备,其中由所述处理单元发布的所述加载命令在所述加载命令的地址字段中包括对应于简档表中的条目的标识符,其中所述简档表中的所述条目包括用于对所述第一加速引擎生成请求的信息,并且其中触发所述第一加速引擎以用于在所述分组上执行所述第一附加操作处理包括:
基于对应于所述简档表中的所述条目访问所述简档表;
从所述简档表的所述条目中检索用于对所述第一加速引擎生成所述请求的信息;
基于所检索的信息生成所述请求;以及
向所述第一加速引擎发送所述请求。
17.根据权利要求16所述的网络设备,其中所述分组处理节点进一步被配置为:
接收由所述第一加速引擎执行的所述第一附加处理操作的所述结果;以及
响应于接收所述第一附加处理操作的所述结果,释放所述信道ID,以指示所述第一附加处理操作的所述结果可以用于被所述处理单元检索。
18.根据权利要求16所述的网络设备,其中所述简档表中的所述条目进一步包括用于存储所述第一附加处理操作的所述结果的第一存储器位置的地址,并且其中所述分组处理节点进一步被配置为将所述第一附加处理操作的所述结果写入到第一存储器位置。
19.根据权利要求18所述的网络设备,其中用于启动触发所述第一加速引擎的所述加载命令为第一加载命令,
并且其中所述处理单元进一步被配置为发布以从所述第一存储器位置检索数据的第二加载命令,其中所述第二加载命令在所述第二加载命令的地址字段中包括(i)信道ID和(ii)所述第一存储器位置的地址,并且其中
所述分组处理节点进一步被配置为:
确定所述信道ID是否已被释放;以及
当确定了所述信道ID已被释放时,使来自所述第一存储器位置的数据被加载到所述处理单元。
20.根据权利要求19所述的网络设备,其中所述分组处理节点被配置为:在相同的时钟周期期间(i)释放所述信道ID、(ii)确定所述信道ID已被释放以及(iii)使来自所述第一存储器位置的数据被加载到所述处理单元。
CN201480066759.8A 2013-10-17 2014-10-16 用于并发地处理网络分组的方法和设备 Active CN106537863B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361892063P 2013-10-17 2013-10-17
US61/892,063 2013-10-17
US201361918493P 2013-12-19 2013-12-19
US61/918,493 2013-12-19
PCT/IB2014/002825 WO2015056101A2 (en) 2013-10-17 2014-10-16 Processing concurrency in a network device

Publications (2)

Publication Number Publication Date
CN106537863A CN106537863A (zh) 2017-03-22
CN106537863B true CN106537863B (zh) 2019-11-26

Family

ID=52350151

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480066759.8A Active CN106537863B (zh) 2013-10-17 2014-10-16 用于并发地处理网络分组的方法和设备

Country Status (3)

Country Link
US (2) US9467399B2 (zh)
CN (1) CN106537863B (zh)
WO (1) WO2015056101A2 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9455907B1 (en) 2012-11-29 2016-09-27 Marvell Israel (M.I.S.L) Ltd. Multithreaded parallel packet processing in network devices
US9276868B2 (en) 2012-12-17 2016-03-01 Marvell Israel (M.I.S.L) Ltd. Maintaining packet order in a parallel processing network device
CN105765928B (zh) 2013-09-10 2019-02-15 马维尔国际贸易有限公司 用于处理网络分组的方法和网络设备
US9479620B2 (en) 2013-10-17 2016-10-25 Marvell World Trade Ltd. Packet parsing and key generation in a network device
US9467399B2 (en) 2013-10-17 2016-10-11 Marvell World Trade Ltd. Processing concurrency in a network device
US9923813B2 (en) 2013-12-18 2018-03-20 Marvell World Trade Ltd. Increasing packet processing rate in a network device
US9886273B1 (en) 2014-08-28 2018-02-06 Marvell Israel (M.I.S.L.) Ltd. Maintaining packet order in a parallel processing network device
US10015048B2 (en) 2014-12-27 2018-07-03 Intel Corporation Programmable protocol parser for NIC classification and queue assignments
US9954771B1 (en) * 2015-01-30 2018-04-24 Marvell Israel (M.I.S.L) Ltd. Packet distribution with prefetch in a parallel processing network device
US9912774B2 (en) 2015-12-22 2018-03-06 Intel Corporation Accelerated network packet processing
US10911317B2 (en) * 2016-10-21 2021-02-02 Forward Networks, Inc. Systems and methods for scalable network modeling
US20180150256A1 (en) 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US10701002B1 (en) 2016-12-07 2020-06-30 Marvell International Ltd. System and method for memory deallocation
CN110214437B (zh) 2016-12-07 2023-04-14 马维尔亚洲私人有限公司 用于存储器访问令牌重新分配的系统和方法
US11245572B1 (en) 2017-01-31 2022-02-08 Barefoot Networks, Inc. Messaging between remote controller and forwarding element
US10735221B2 (en) 2017-03-28 2020-08-04 Marvell International Ltd. Flexible processor of a port extender device
US10757028B1 (en) 2017-04-23 2020-08-25 Barefoot Networks, Inc. Configurable forwarding element deparser
US11503141B1 (en) 2017-07-23 2022-11-15 Barefoot Networks, Inc. Stateful processing unit with min/max capability
US20190044809A1 (en) * 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller
US10771387B1 (en) 2017-09-28 2020-09-08 Barefoot Networks, Inc. Multiple packet data container types for a processing pipeline
CN112334982A (zh) 2018-07-30 2021-02-05 马维尔国际贸易有限公司 共享存储器块配置
US11343358B2 (en) 2019-01-29 2022-05-24 Marvell Israel (M.I.S.L) Ltd. Flexible header alteration in network devices
US20240069795A1 (en) * 2022-08-30 2024-02-29 Micron Technology, Inc. Access request reordering across a multiple-channel interface for memory-based communication queues
US20240069805A1 (en) * 2022-08-30 2024-02-29 Micron Technology, Inc. Access request reordering for memory-based communication queues

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764895A (en) 1995-01-11 1998-06-09 Sony Corporation Method and apparatus for directing data packets in a local area network device having a plurality of ports interconnected by a high-speed communication bus
FI104672B (fi) 1997-07-14 2000-04-14 Nokia Networks Oy Kytkinjärjestely
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6768992B1 (en) * 1999-05-17 2004-07-27 Lynne G. Jolitz Term addressable memory of an accelerator system and method
US6952409B2 (en) * 1999-05-17 2005-10-04 Jolitz Lynne G Accelerator system and method
US6607806B2 (en) * 1999-12-09 2003-08-19 Fuji Photo Film Co., Ltd. Magnetic recording medium
US6691143B2 (en) * 2000-05-11 2004-02-10 Cyberguard Corporation Accelerated montgomery multiplication using plural multipliers
US7305492B2 (en) 2001-07-06 2007-12-04 Juniper Networks, Inc. Content service aggregation system
US7177311B1 (en) 2002-06-04 2007-02-13 Fortinet, Inc. System and method for routing traffic through a virtual router-based network switch
US7467406B2 (en) * 2002-08-23 2008-12-16 Nxp B.V. Embedded data set processing
JP4431315B2 (ja) 2003-01-14 2010-03-10 株式会社日立製作所 パケット通信方法およびパケット通信装置
US8477780B2 (en) 2003-03-26 2013-07-02 Alcatel Lucent Processing packet information using an array of processing elements
US8310927B1 (en) 2004-04-27 2012-11-13 Marvell International Ltd. Priority scheme for control traffic in network switches
US7260661B2 (en) * 2004-09-03 2007-08-21 Intel Corporation Processing replies to request packets in an advanced switching context
US20060050722A1 (en) * 2004-09-03 2006-03-09 James Bury Interface circuitry for a receive ring buffer of an as fabric end node device
US8250643B2 (en) * 2005-02-28 2012-08-21 Nec Corporation Communication device, communication system, communication method, and program
US20060239194A1 (en) 2005-04-20 2006-10-26 Chapell Christopher L Monitoring a queue for a communication link
KR100794623B1 (ko) * 2005-06-20 2008-01-14 주식회사 픽스트리 가속화 프로세싱을 실시간으로 수행하는 디코더시스템의 작동방법
US9130968B2 (en) 2008-01-16 2015-09-08 Netapp, Inc. Clustered cache appliance system and methodology
US8139488B2 (en) 2008-05-30 2012-03-20 Cisco Technology, Inc. Cooperative flow locks distributed among multiple components
US8072974B1 (en) 2008-07-18 2011-12-06 Tellabs San Jose Inc Method and apparatus for improving packet processing performance using multiple contexts
US7864764B1 (en) 2008-09-16 2011-01-04 Juniper Networks, Inc. Accelerated packet processing in a network acceleration device
CN101415117B (zh) * 2008-11-18 2010-06-09 浙江大学 基于gpgpu的高真实感图像的传输方法
EP2192780A1 (en) * 2008-11-28 2010-06-02 Thomson Licensing Method for video decoding supported by Graphics Processing Unit
US7924860B1 (en) 2008-12-23 2011-04-12 Juniper Networks, Inc. Maintaining data unit order in a network switching device
US20100175073A1 (en) 2009-01-07 2010-07-08 Inventec Corporation Network device for accelerating iscsi packet processing
US8917738B2 (en) 2009-04-27 2014-12-23 Lsi Corporation Multicasting traffic manager in a network communications processor architecture
US20100332613A1 (en) * 2009-06-30 2010-12-30 Jorg Brakensiek Method and apparatus for providing content and context analysis of remote device content
CN101650820B (zh) * 2009-09-24 2011-07-20 浙江大学 基于多核架构的大图像实时浏览方法
CN101751376B (zh) * 2009-12-30 2012-03-21 中国人民解放军国防科学技术大学 利用cpu和gpu协同工作对三角线性方程组求解的加速方法
CN101788896A (zh) * 2010-02-05 2010-07-28 郅熙龙 一种cuda架构下任意尺寸数据的高速计算方法
CN101833438A (zh) * 2010-04-19 2010-09-15 浙江大学 一种基于多重并行的数据通用处理方法
US9344377B2 (en) 2010-04-30 2016-05-17 Broadcom Corporation Packet processing architecture
US9015443B2 (en) 2010-04-30 2015-04-21 International Business Machines Corporation Reducing remote reads of memory in a hybrid computing environment
US9141831B2 (en) 2010-07-08 2015-09-22 Texas Instruments Incorporated Scheduler, security context cache, packet processor, and authentication, encryption modules
US20120041998A1 (en) 2010-08-13 2012-02-16 Lsi Corporation Network Interface for Accelerating XML Processing
US9600429B2 (en) 2010-12-09 2017-03-21 Solarflare Communications, Inc. Encapsulated accelerator
US8996644B2 (en) 2010-12-09 2015-03-31 Solarflare Communications, Inc. Encapsulated accelerator
KR20120072134A (ko) * 2010-12-23 2012-07-03 한국전자통신연구원 가상 데스크톱 가속 장치 및 방법
WO2012093335A1 (en) 2011-01-06 2012-07-12 Marvell Israel (M.I.S.L) Ltd. Network device with a programmable core
US8817799B2 (en) 2011-04-14 2014-08-26 Broadcom Corporation Network processor for supporting residential gateway applications
US8705572B2 (en) 2011-05-09 2014-04-22 Emulex Corporation RoCE packet sequence acceleration
US9088520B2 (en) 2011-09-15 2015-07-21 Ixia Network impairment unit for concurrent delay and packet queue impairments
US9092274B2 (en) 2011-12-07 2015-07-28 International Business Machines Corporation Acceleration for virtual bridged hosts
US10338091B2 (en) 2012-02-08 2019-07-02 Ashton Wackym Concussion detection and communication system
US9374320B2 (en) 2012-07-27 2016-06-21 Cisco Technology, Inc. Investigating the integrity of forwarding paths within a packet switching device
US9276868B2 (en) 2012-12-17 2016-03-01 Marvell Israel (M.I.S.L) Ltd. Maintaining packet order in a parallel processing network device
US9553820B2 (en) 2012-12-17 2017-01-24 Marvell Israel (M.L.S.L) Ltd. Maintaining packet order in a parallel processing network device
WO2014096970A2 (en) 2012-12-20 2014-06-26 Marvell World Trade Ltd. Memory sharing in a network device
JP6116941B2 (ja) * 2013-02-28 2017-04-19 株式会社東芝 情報処理装置
CN105765928B (zh) 2013-09-10 2019-02-15 马维尔国际贸易有限公司 用于处理网络分组的方法和网络设备
US9680738B2 (en) 2013-09-15 2017-06-13 Nicira, Inc. Tracking prefixes of values associated with different rules to generate flows
US10355997B2 (en) 2013-09-26 2019-07-16 Appformix Inc. System and method for improving TCP performance in virtualized environments
US9467399B2 (en) 2013-10-17 2016-10-11 Marvell World Trade Ltd. Processing concurrency in a network device
US9479620B2 (en) 2013-10-17 2016-10-25 Marvell World Trade Ltd. Packet parsing and key generation in a network device
US9923813B2 (en) 2013-12-18 2018-03-20 Marvell World Trade Ltd. Increasing packet processing rate in a network device

Also Published As

Publication number Publication date
US9467399B2 (en) 2016-10-11
CN106537863A (zh) 2017-03-22
WO2015056101A3 (en) 2015-08-13
US20150113190A1 (en) 2015-04-23
US9461939B2 (en) 2016-10-04
US20150110114A1 (en) 2015-04-23
WO2015056101A2 (en) 2015-04-23

Similar Documents

Publication Publication Date Title
CN106537863B (zh) 用于并发地处理网络分组的方法和设备
CN104769591B (zh) 分布式节点之间的存储器共享
US8051227B1 (en) Programmable queue structures for multiprocessors
CN109075988B (zh) 任务调度和资源发放系统和方法
US7770177B2 (en) System for memory reclamation based on thread entry and release request times
CN107690622A (zh) 实现硬件加速处理的方法、设备和系统
CN105988876B (zh) 内存分配方法及装置
JPH1165863A (ja) 共有資源管理方法
JP6759285B2 (ja) ローカライズされたデータアフィニティシステム及びハイブリッド法
US20110145312A1 (en) Server architecture for multi-core systems
US10423467B2 (en) Data processing apparatus and method for performing lock-protected processing operations for multiple threads
CN105608162B (zh) 文件处理方法和装置
CN106534287A (zh) 一种会话表项的管理方法和装置
US8594113B2 (en) Transmit-side scaler and method for processing outgoing information packets using thread-based queues
CN107153643A (zh) 数据表连接方法及装置
US11269687B2 (en) Map reduce using coordination namespace hardware acceleration
López-Ortiz et al. Paging for multi-core shared caches
JP6283376B2 (ja) クラスタにおけるワークシェアリング多重化をサポートするためのシステムおよび方法
CN104750614B (zh) 用于管理存储器的方法和装置
CN109117189A (zh) 数据处理方法、装置及计算机设备
US20210191727A1 (en) Tuple checkout with notify in coordination namespace system
Choi et al. An implementation of OFI libfabric in support of multithreaded PGAS solutions
CN108595270A (zh) 一种内存资源的回收方法及装置
JPH10240695A (ja) Sciシステムにおける複数の未処理要求の局所記憶装置を用いた操作
CN110489222A (zh) 任务调度方法、系统、集群服务器及可读存储介质

Legal Events

Date Code Title Description
C06 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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200513

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200513

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Patentee before: Marvell International Ltd.

Effective date of registration: 20200513

Address after: Hamilton, Bermuda

Patentee after: Marvell International Ltd.

Address before: Babado J San Mega Le

Patentee before: MARVELL WORLD TRADE Ltd.