Multi-threaded packet processing architecture with global packet memory, packet recirculation, and coprocessor
First Claim
1. A packet processor, comprising:
- an external interface to receive external packets from a network;
a recirculation interface to receive recirculated packets;
a plurality of packet processor elements each operating one or more threads;
a packet memory coupled to the external interface to store the external packets, coupled to the recirculation interface to store the recirculated packets, and coupled to the packet processing elements to enable the packet processor elements to process both the external packets and the recirculated packets;
a distributor distributing ones of the external packets in the packet memory to free ones of the threads according to a bounded time arrival processing required for the external packets, and distributing ones of the recirculated packets in the packet memory to free ones of the threads according to a variable time main processing required for the recirculated packets; and
wherein the arrival processing of the external packets by the packet processor elements is used, at least in part, to produce the recirculated packets.
1 Assignment
0 Petitions
Accused Products
Abstract
A network processor has numerous novel features including a multi-threaded processor array, a multi-pass processing model, and Global Packet Memory (GPM) with hardware managed packet storage. These unique features allow the network processor to perform high-touch packet processing at high data rates. The packet processor can also be coded using a stack-based high-level programming language, such as C or C++. This allows quicker and higher quality porting of software features into the network processor.
Processor performance also does not severely drop off when additional processing features are added. For example, packets can be more intelligently processed by assigning processing elements to different bounded duration arrival processing tasks and variable duration main processing tasks. A recirculation path moves packets between the different arrival and main processing tasks. Other novel hardware features include a hardware architecture that efficiently intermixes co-processor operations with multi-threaded processing operations and improved cache affinity.
35 Citations
19 Claims
-
1. A packet processor, comprising:
-
an external interface to receive external packets from a network; a recirculation interface to receive recirculated packets; a plurality of packet processor elements each operating one or more threads; a packet memory coupled to the external interface to store the external packets, coupled to the recirculation interface to store the recirculated packets, and coupled to the packet processing elements to enable the packet processor elements to process both the external packets and the recirculated packets; a distributor distributing ones of the external packets in the packet memory to free ones of the threads according to a bounded time arrival processing required for the external packets, and distributing ones of the recirculated packets in the packet memory to free ones of the threads according to a variable time main processing required for the recirculated packets; and wherein the arrival processing of the external packets by the packet processor elements is used, at least in part, to produce the recirculated packets. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A packet processor, comprising:
-
an array of packet processing elements, each enabled to operate one or more threads; a memory system including packet memory to store packets and a packet handle data structure having a plurality of entries, each of the packets in the packet memory associated with a respective one of the packet handle data structure entries; a distributor coupled to the memory system, the distributor enabled to assign to the threads ones of the packets in the memory system to be processed; a gather mechanism coupled to the memory system and enabled to use the respective packet handle data structure entries of processed ones of the packets to independently gather and assemble the processed packets to output from the packet memory; and wherein a first one of the packets associated with a first one of the packet handle data structure entries is assigned to a particular one of the threads by the distributor, the particular thread completes the processing of the first packet, and a second one of the packets associated with a second one of the packet handle data structure entries is assigned to the particular thread by the distributor prior to the gather mechanism using the first packet handle data structure entry to gather the first packet. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A packet processor, comprising:
-
a plurality of packet processing elements to process packets; a queuing system to store the packets after being processed by the packet processing elements; a distributor enabled to allocate packets to free ones of the packet processing elements received both from one or more external ports and recirculated via the queuing system; wherein each of the packet processing elements is enabled to be notified by the distributor after the distributor has allocated one of the packets to the packet processing element; wherein a particular one of the packet processing elements is enabled to process both ones of the packets received from the external ports and ones of the packets recirculated via the queuing system; and wherein the queuing system comprises roots and associated queues that store the packets, some of the roots configured as recycle roots that send the packets in the associated queues back to the distributor for reallocation to the packet processing systems. - View Dependent Claims (17, 18, 19)
-
Specification