archives

Taming the IXP network processor

Taming the IXP network processor, Lal George and Matthias Blume. PLDI 2003.

We compile Nova, a new language designed for writing network processing applications, using a back end based on integer-linear programming (ILP) for register allocation, optimal bank assignment, and spills. The compiler's optimizer employs CPS as its intermediate representation; some of the invariants that this IR guarantees are essential for the formulation of a practical ILP model.

Appel and George used a similar ILP-based technique for the IA32 to decide which variables reside in registers but deferred the actual assignment of colors to a later phase. We demonstrate how to carry over their idea to an architecture with many more banks, register aggregates, variables with multiple simultaneous register assignments, and, very importantly, one where bank- and register-assignment cannot be done in isolation from each other. Our approach performs well in practise--without causing an explosion in size or solve time of the generated integer linear programs.

This is a nice paper showing how to design and compile a small functional language in a high-performance domain with a very irregular underlying machine model.

Commercial Users of Functional Programming 2007

The program for CUFP 2007 is now available. The goal of CUFP is to build a community for users of functional programming languages and technology, be they using functional languages in their professional lives, in an open source project (other than implementation of functional languages), as a hobby, or any combination thereof.

This year's offering includes presentations about projects that use Caml, Erlang, Haskell, Scheme, F# and more. Domain specific embedded languages are also mentioned in the abstracts. Some of the presentations deal with projects mentioned here before, such as the Intel IXP network processor but others are new to me and sound quite intriguing.

Some of the people involved with the CUFP workshop are LtU regulars and contributors who may want to add more details and respond to questions or comments.