Research

My research activities just started, so there is little to tell. I will just give a brief overview on the projects I am currently working on:

Energy Reducing Techniques

There are lots of papers on software energy reduction in the field of embedded and DSP processors, but the common breakthrough is still missing. One basic technique is instruction reordering to reduce switching activities on the instruction bus, but this is only half the way. It is also necessary to reduce energy dissipation in the processor core (datapath, registerfile, functional units). This can be achieved by a data-sensitive register allocation algorithm as described by Jui-Ming Chang. Still the currently known solutions suffer from the strong interdependecies between instruction scheduling and register allocation. So it seems obvious to work on integrating those two tasks with the goal of energy reduction in mind.
We all will see ......

Register Allocation

Graph-coloring register allocation techniques suffer from irregularities of modern DSP architectures. It is very difficult to properly model restrictions on the CPU registers without overly constraining the interference graph.
Currently our group is working on different possibilities to improve the graph-coloring approach for various irrgegularities, e.g. banked register files.

If Conversion and Instruction Scheduling

Control flow decissions are known to be expensive in modern processor implementations. Further, control flow limits scheduling scope and that results in poor instruction level parallelism (ILP) on VLIW architectures.
I do some investigation of the interaction of scheduling and if conversion. The goal of this project is to maximize ILP without over-using registers, without excessive code enlargement, and without loosing instruction cycles.

Retargetable Compiler Design

The techniques mentioned above are implemented for a set of similar processor architectures. Having different executable compiler versions for the different architectural models is very error-prone, therefore I am working on making the compiler runtime configurable. This is only a minor scientific interest and only serves to facilitate my daily work.