A high-speed network environment typically includes network devices such as routers and switches that facilitate delivery of information packets from source devices to destination devices. Information pertaining to the transfer of packet(s) through the network is usually embedded within one or more packets. Each packet traveling through a network can typically be treated independently from other packets in a packet stream. For example, each router within a network processes incoming packets and determines where the packet(s) should be forwarded. In a modern computing network environment, the speed of packet processing or routing can be critical in determining the performance of overall network system.
To process or route a packet, a typical router employs one of its multiple processing engines to perform packet processing, which may involve in classifying received packet, identifying results through a lookup table, performing data integrity of the packet, and so forth. A problem associated with a typical packet processing is that the processing speed of packets is usually slower than the speed of incoming packets. To make a bad situation worse, typical processing engines are often forced to idle while it is waiting for necessary data from previous stage, such as results from a CAM lookup and/or CRC result, to proceed to the next stage of the packet processing. When a processing engine(s) idles, it reduces or impacts efficiency of packet processing, and affects overall packet throughput.
A conventional approach to improve processing speed is to add additional processing engines or network processors. A drawback, however, associated with the additional processing engine(s) is added complexity of hardware, which may increase die size, power consumption, and control circuitry.