IP Library Granted Patent US 9,467,399
Granted Patent B2
US 9,467,399 · App. 14/516,529 · Granted Oct 11, 2016

Processing concurrency in a network device

Inventors: Aron Wohlgemuth (Givat Shmuel, IL); Rami Zemach (Givat Shapira, IL); Gil Levy (Hod Hasharon, IL)
Assignee: Marvell World Trade Ltd.
H04L49/3063G06F9/524G06F12/023H04L45/74H04L69/12H04L69/22G06F2212/163
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,467,399
App. No.
14/516,529
Granted
Oct 11, 2016
Kind
B2
Abstract

One or more processing operations with respect to a packet are performed at a packet processing node of a network device, the packet processing node configured to perform multiple different processing operations with respect to the packet. A first accelerator engine is triggered for performing a first additional processing operation with respect to the packet. The first additional processing operation constitutes an operation that is different from the multiple different processing operations that the packet processing node is configured to perform. The first additional processing operation is performed by the first accelerator engine. Concurrently with performing the first additional processing operation at the first accelerator engine, at least a portion of a second additional processing operation with respect to the packet is performed by the packet processing node, the second additional processing operation not dependent on a result of the first additional processing operation.

Claims (67)

1. A method for processing packets in a network device that includes at least one packet processing node and a plurality of accelerator engines, the method comprising:

performing one or more processing operations with respect to a packet at the packet processing node, the packet processing node being configured to perform multiple different processing operations with respect to the packet;

triggering a first accelerator engine for performing a first additional processing operation with respect to the packet, wherein the first additional processing operation constitutes an operation that is different from the multiple different processing operations that the packet processing node is configured to perform;

performing the first additional processing operation by the first accelerator engine; and

concurrently with performing the first additional processing operation at the first accelerator engine, performing at least a portion of a second additional processing operation with respect to the packet by the packet processing node, wherein the second additional processing operation is not dependent on a result of the first additional processing operation.

2. The method of claim 1 , further comprising:

before the first additional processing operation is completed by the first accelerator engine, triggering a second accelerator engine for performing a third additional processing operation with respect to the packet, wherein the third additional processing operation constitutes an operation that is different from the multiple different processing operations that the packet processing node is configured to perform, and

performing the third additional processing operation on the packet by the second processing engine, including performing at least a portion of the third additional processing operation concurrently with performing at least a portion of the first additional processing operation by the first accelerator engine.

3. The method of claim 1 , further comprising, after performing the at least the second additional processing operation with respect to the packet, suspending processing of the packet at the packet processing node when no additional processing with respect to the packet can be performed at the packet processing node without a result of the first additional processing operation.

4. The method of claim 3 , further comprising:

receiving, at the packet processing node from the first accelerator engine, the result of the first additional processing operation,

in response to receiving the result of the first additional processing operation, resuming processing of the packet by the packet processing node, and

performing one or more further processing operations with respect to the packet at the packet processing node based on the result of the first additional processing operation.

5. The method of claim 1 , wherein the packet processing node includes a processing unit configured to execute computer readable instructions stored in a non-transitory memory, and wherein triggering the first accelerator engine for performing the first additional processing operation with respect to the packet includes

issuing a load command by the processing unit, wherein the load command (i) provides an indication of the first additional processing operation and (ii) requests a channel identifier (ID) corresponding to a channel used to conduct a transaction with the first accelerator engine for performing the first additional processing operation,

in response to issuing the load command, loading, at the processing unit, the channel identifier (ID) corresponding to the channel used to conduct a transaction with the first accelerator engine, and

locking the channel ID to indicate that a result of the first additional processing operation is not available for retrieval by the processing unit.

6. The method of claim 5 , wherein the load command includes, in an address field of the load command, an identifier corresponding to an entry in a profile table, wherein the entry in the profile table includes information for generating a request to the first accelerator engine, and wherein triggering the first accelerator engine further includes:

accessing the profile table based on the identifier corresponding to the entry in the profile table,

retrieving, from the entry of the profile table, information for generating the request to the first accelerator engine,

generating the request based on the retrieved information, and

sending the request to the first accelerator engine.

7. The method of claim 6 , further comprising

receiving, at the packet processing node, the result of the first processing operation performed by the first accelerator engine, and

in response to receiving the result of the first additional processing operation, releasing the channel ID to indicate that the result of the first additional processing operation is available for retrieval by the processing unit.

8. The method of claim 7 , wherein the entry in the profile table further includes an address of a memory location for storing the result of the first processing operation, and wherein the method further comprises writing the result of the first additional processing operation to the first memory location.

9. The method of claim 8 , wherein the load command to initiate triggering of the first accelerator engine is a first load command, and wherein the method further comprises

issuing, by the processing unit, a second load command to retrieve data from the first memory location, wherein the second load command includes, in an address field of the second load command, (i) the channel ID and (ii) the address of the first memory location,

determining whether the channel ID has been released, and

when it is determined that the channel ID has been released, causing data from the first memory location to be loaded by the processing unit.

10. The method of claim 9 , wherein (i) releasing the channel ID, (ii) determining that the channel ID has been released and (iii) retrieving at least a portion of the result is performed during a same clock cycle.

11. A network device, comprising

a plurality of network ports configured to receive and to transmit packets on a network;

at least one packet processing node configured to perform multiple different packet processing operations with respect to the packets, and

a plurality of accelerator engines, including at least a first accelerator engine configured to perform a first additional processing operation, wherein the first additional processing operation constitutes an operation that is different from the multiple different processing operations that the packet processing node is configured to perform,

wherein the at least one packet processing node is configured to

perform one or more processing operations on a packet;

trigger the first accelerator engine for performing the first additional processing operation with respect to the packet, and

perform at least a portion of a second additional processing operation with respect to the packet concurrently with the first processing operation performed with respect to the packet by the first accelerator engine, wherein the second additional processing operation is not dependent on a result of the first additional processing operation.

12. The network device of claim 11 , wherein the packet processing node is further configured to:

before the first additional processing operation is completed by the first accelerator engine, trigger a second accelerator engine, of the plurality of accelerator engines, for performing a third additional processing operation on the packet, wherein the third additional processing operation constitutes an operation that is different from the multiple different processing operations that the packet processing node is configured to perform, and

wherein at least a portion of the third additional processing operation is performed by the second accelerator engine concurrently with at least a portion of the first additional processing operation performed by the first accelerator engine.

13. The network device of claim 11 , wherein the packet processing node is further configured to, after performing the at least the second additional processing operation with respect to the packet, suspend processing of the packet when no additional processing on the packet can be performed at the packet processing node without a result of the first additional processing operation.

14. The network device of claim 13 , wherein the packet processing node is further configured to

receive the result of the first additional processing operation from the first accelerator engine,

resume processing of the packet, and

perform one or more further processing operations with respect to the packet based on the result of the first additional processing operation.

15. The network device of claim 11 , wherein the packet processing node includes a processing unit configured to execute computer readable instructions stored in a non-transitory memory, and wherein the packet processing node is configured to

initiate triggering of the first accelerator engine by issuing a load command from the processing unit, wherein the load command (i) provides an indication of the first additional processing operation and (ii) requests a channel identifier (ID) corresponding to a channel used to conduct a transaction with the first accelerator engine for performing the first additional processing operation, and

in response to issuing the load command

load, at the processing unit, the channel identifier (ID) corresponding to the channel used for conducting a transaction with the first accelerator engine for performing the first additional processing operation, and

lock the channel ID to indicate that the result of the first additional processing operation is not available for retrieval by the processing unit.

16. The network device of claim 15 , wherein the load command issued by the processing unit includes, in an address field of the load command, an identifier corresponding to an entry in a profile table, wherein the entry in the profile table includes information for generating a request to the first accelerator engine, and wherein triggering the first accelerator engine for performing the first additional processing operation on the packet includes:

accessing the profile table based on the identifier corresponding to the entry in the profile table,

retrieving, from the entry of the profile table, information for generating the request to the first accelerator engine,

generating the request based on the retrieved information, and

sending the request to the first accelerator engine.

17. The network device of claim 16 , wherein the packet processing node is further configured to

receive the result of the first processing operation performed by the first accelerator engine, and

in response to receiving the result of the first processing operation, release the channel ID to indicate that the result of the first additional processing operation is available for retrieval by the processing unit.

18. The network device of claim 16 , wherein the entry in the profile table further includes an address of a memory location for storing the result of the first processing operation, and wherein the packet processing node is further configured to write the result of the first processing operation to the first memory location.

19. The network device of claim 15 , wherein the load command to initiate triggering of the first accelerator engine is a first load command, and wherein

the processing unit is further configured to issue, a second load command to retrieve data from the first memory location, wherein the second load command includes, in an address field of the second load command, (i) the channel ID and (ii) the address of the first memory location, and wherein

the packet processing node is further configured to

determine whether the channel ID has been released, and

when it is determined that the channel ID has been released, cause data from the first memory location to be loaded to the processing unit.

20. The network device of claim 19 , wherein the packet processing node is configured to (i) release the channel ID, (ii) determine that the channel ID has been released and (iii) cause data from the first memory location to be loaded to the processing unit during a same clock cycle.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053475/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: MARVELL INTERNATIONAL LTD.
To: CAVIUM INTERNATIONAL
Reel/Frame 052918/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2020
From: MARVELL WORLD TRADE LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 051778/0537 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 15, 2016
From: MARVELL INTERNATIONAL LTD.
To: MARVELL WORLD TRADE LTD.
Reel/Frame 038921/0531 →
LICENSE Recorded Jun 9, 2016
From: MARVELL WORLD TRADE LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 038859/0653 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2016
From: MARVELL ISRAEL (M.I.S.L) LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 038859/0588 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 14, 2016
From: WOHLGEMUTH, ARON; ZEMACH, RAMI; LEVY, GIL
To: MARVELL ISRAEL (M.I.S.L) LTD
Reel/Frame 038288/0518 →
Continuity (3)
Provisional Application 61918493 · Dec 19, 2013
Provisional Application 61892063 · Oct 17, 2013
Related Publication 20150110114A1 · Apr 23, 2015