Intel Internet Exchange Architecture and Applications: A Practical Guide to IXP2XXX Network Processors

Parallel processing and multithreading are how Intel IXA gets its high performance and form the foundational processing paradigm for the IXP2XXX network processors. The concepts aren t that difficult. As packets are received from the network, a microengine thread picks up a packet and processes it. Because the total time it takes for one thread to process one packet often exceeds the time that new packets arrive, additional threads pick up new packets as they are received. Because only one of the eight threads in a microengine can be executing at one time, the thread execution is time sliced with other threads, with one thread processing instructions while the other threads are idle, waiting for memory or I/O operations to complete. This multithreading technique is how the IXP2XXX network processors process packets at line rate. The system designer assigns the appropriate number of threads (and micro- engines) to handle the anticipated packet rate.
General-purpose processors were never designed for the unique demands of network traffic because they are not able to efficiently hide memory latencies found in networking applications. To provide the packet-processing capability needed for network traffic, the IXP2XXX network processors have special hardware to remove the damaging effects of memory latencies. However, not all memory latency problems have the same negative effect. Some memory latency problems require application specific mechanisms to solve them. Before you learn about the effects of memory latencies...