IXP1200 Programming: The Microengine Coding Guide for the Intel IXP1200 Network Processor Family

Chapter 4: Microblock Design Philosophy

The goal of this chapter is to explain some IXP12xx microengine software design philosophy. We ll present one particular design philosophy-that we have found to work well, balancing code performance and modularity called microblock design.

Although the microblock design philosophy is driven by the IXP12xx hardware, the hardware does not mandate that you write your code using this philosophy. This is just the framework that we have found to be successful for producing high-performance, modular code.

The Philosophy

Now that you have learned about the hardware and worked with enough microengine code to make you dangerous, it is time to learn a little bit about a design philosophy that will help you produce good IXP12xx microengine code. This design philosophy attempts to maximize two attributes of the code: performance and modularity. Because of the hardware threads in the microengines, designing IXP12xx code is quite a bit different from designing code for a general-purpose processor.

Performance

The first challenge is writing code that uses the parallelism that exists in the microengines to achieve the best performance. In any multi-threaded system, having a lot of mutual exclusion can be detrimental to system performance. The same is true in the IXP12xx microengines. If a microengine thread is spending a large number of cycles acquiring or freeing locks, those cycles are not available for processing packets. The microblock design philosophy attempts to avoid a lot of mutual exclusion by having only one thread at a time working on a particular packet or cell. By structuring...

UNLIMITED FREE
ACCESS
TO THE WORLD'S BEST IDEAS

SUBMIT
Already a GlobalSpec user? Log in.

This is embarrasing...

An error occurred while processing the form. Please try again in a few minutes.

Customize Your GlobalSpec Experience

Category: Rotary Encoders
Finish!
Privacy Policy

This is embarrasing...

An error occurred while processing the form. Please try again in a few minutes.