Task Backpressure and Deletion in a Multi-Flow Network Processor Architecture
First Claim
1. A method of processing a received packet of a network processor, wherein the network processor comprises a plurality of processing modules and at least one shared memory, the method comprising:
- generating one or more tasks corresponding to each received packet;
sending, by a source processing module, a task message corresponding to a task to a destination processing module, the task message comprising a task identifier and a task size;
receiving, by the destination processing module, the task message;
determining, by the destination processing module, (i) an associated one of a plurality of task queues of the destination processing module in which to store the task, and (ii) based on (1) a used cache counter of the destination processing module associated with the associated task queue and (2) a number of cache lines required for the received task, whether the associated task queue has reached a usage threshold;
if the associated task queue has reached the usage threshold;
sending a backpressure message to the source processing module;
otherwise, if the associated task queue has not reached the usage threshold;
accepting the received task and storing data associated with the received task in the associated task queue;
incrementing the used cache counter for the associated task queue corresponding to the number of cache lines required for the received task; and
processing, by the destination processing module, the received task.
5 Assignments
0 Petitions
Accused Products
Abstract
Described embodiments generate tasks corresponding to packets received by a network processor. A source processing module sends task messages including a task identifier and a task size to a destination processing module. The destination module receives the task message and determines a queue in which to store the task. Based on a used cache counter of the queue and a number of cache lines for the received task, the destination module determines whether the queue has reached a usage threshold. If the queue has reached the threshold, the destination module sends a backpressure message to the source module. Otherwise, if the queue has not reached the threshold, the destination module accepts the received task, stores data of the received task in the queue, increments the used cache counter for the queue corresponding to the number of cache lines for the received task, and processes the received task.
-
Citations
20 Claims
-
1. A method of processing a received packet of a network processor, wherein the network processor comprises a plurality of processing modules and at least one shared memory, the method comprising:
-
generating one or more tasks corresponding to each received packet; sending, by a source processing module, a task message corresponding to a task to a destination processing module, the task message comprising a task identifier and a task size; receiving, by the destination processing module, the task message; determining, by the destination processing module, (i) an associated one of a plurality of task queues of the destination processing module in which to store the task, and (ii) based on (1) a used cache counter of the destination processing module associated with the associated task queue and (2) a number of cache lines required for the received task, whether the associated task queue has reached a usage threshold; if the associated task queue has reached the usage threshold; sending a backpressure message to the source processing module; otherwise, if the associated task queue has not reached the usage threshold; accepting the received task and storing data associated with the received task in the associated task queue; incrementing the used cache counter for the associated task queue corresponding to the number of cache lines required for the received task; and processing, by the destination processing module, the received task. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A non-transitory machine-readable medium, having encoded thereon program code, wherein, when the program code is executed by a machine, the machine implements a method of processing a received packet of a network processor, wherein the network processor comprises a plurality of processing modules and at least one shared memory, the method comprising:
-
generating one or more tasks corresponding to each received packet; sending, by a source processing module, a task message corresponding to a task to a destination processing module, the task message comprising a task identifier and a task size; receiving, by the destination processing module, the task message; determining, by the destination processing module, (i) an associated one of a plurality of task queues of the destination processing module in which to store the task, and (ii) based on (1) a used cache counter of the destination processing module associated with the associated task queue and (2) a number of cache lines required for the received task, whether the associated task queue has reached a usage threshold; if the associated task queue has reached the usage threshold; sending a backpressure message to the source processing module; otherwise, if the associated task queue has not reached the usage threshold; accepting the received task and storing data associated with the received task in the associated task queue; incrementing the used cache counter for the associated task queue corresponding to the number of cache lines required for the received task; and processing, by the destination processing module, the received task. - View Dependent Claims (15)
-
-
16. A network processor comprising:
-
a plurality of processing modules and at least one shared memory, one or more of the processing modules configured to generate one or more tasks corresponding to each of a plurality of packets received by the network processor; a source processing module configured to send a task message corresponding to a task to a destination processing module, the task message comprising a task identifier and a task size; the destination processing module configured to (i) receive the task message and (ii) determine. (a) an associated one of a plurality of task queues of the destination processing module in which to store the task, and (b) based on (1) a used cache counter of the destination processing module associated with the associated task queue and (2) a number of cache lines required for the received task, whether the associated task queue has reached a usage threshold; if the associated task queue has reached the usage threshold; the destination processing module is configured to send a backpressure message to the source processing module; otherwise, if the associated task queue has not reached the usage threshold; the destination processing module is configured to;
(i) accept the received task, (ii) store data associated with the received task in the associated task queue, (iii) increment the used cache counter for the associated task queue corresponding to the number of cache lines required for the received task, and (iv) process the received task. - View Dependent Claims (17, 18, 19, 20)
-
Specification