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.