Compiling short-word arithmetic

Idea: A number of important performance-critical applications are characterised by the need for short-word arithmetic. These applications are poorly-served by existing compiler technology and, to some extent, CPU architectures. For example, although processors with 64-bit data paths and arithmetic units are now commonly available, it is very hard to use them to process eight 1-byte fixed-point numbers in parallel. Even when it is possible, the source code is very complex and machine-dependent.

The idea of this project is to study compilation techniques, language design issues, and architectural features to support simple, portable programming of such applications which achieves the performance potential of wide data paths.

Motivation: Examples of application areas where high-performance short-word operations are important include:

The job:

There are several ways to address this project. One way forward would be to base the work on the GNU gcc C compiler. This has the advantage of providing a freely-available, state-of-the-art compiler as a starting point.

Reading:

Various research papers, e.g.

Equipment: Unix workstation.

Recommended tools: GNU C compiler gcc, the SPIM simulator, the SPEC'95 benchmark suite.

Suitability: This is a research-level project with enormous potential scope. The main prerequisites are 1) some intuition and experience thinking about computer systems performance, and 2) proven ability to make complicated software do what you want. Once you've got to grips with the practical work, the real opportunity is to invent clever mechanisms, to design clever, easy-to-do experiments to evaluate your ideas, and to interpret the results.