Porting Different Compilation phases to Runtime.
M. Khawar Sajjad a soutenu sa thèse de l’école doctorale de l’université de Versailles Saint-Quentin en Yvelines devant le jury composé de :
- M. Jean-François MEHAUT (Président),
- M. Tanguy RISSET, Mr Philippe CLAUSS (Rapporteurs),
- M. William JALBY, Mr Yves LHUILLIER,
- M. Henri-Pierre CHARLES Ingénieur Chercheur HDR CEA/LaSTRE Grenoble
Abstract : Modern compilers work hard to generate both correct and efficient code. A number of compiler optimizations have been developed overtime to achieve better program performance. State-of-art compilation tools have largely remained static. Although dynamic compilation techniques have failed to make it to the mainstream, it has been shown that dynamic compilation can help optimize code beyond the limits of traditional static compilers. Classical dynamic compilers have generally relied upon optimizations like partial evaluation, constant/zero propagation, loop unrolling etc. to improve program performance. In this thesis I present dynamic compilation techniques that extend the scope of dynamic optimizations. I have developed techniques that allow binary code generation in the form of simple code components called code blocks that can be interconnect in different ways according to the problem at hand and the ILP-model of the target machine. I show that in most cases the code generated by this technique exhibits performance superior to optimized static C-code. Moreover the technique being at runtime is more flexible as compared to the corresponding static code. I show that my techniques help exploit special purpose machine operations in a portable manner with possible context exploitation e.g. the use of special load operations based on the runtime memory alignment of different variables. I demonstrate dynamic techniques to choose the instruction set (ISA) for several program kernels based on the runtime conditions on a heterogeneous multi-core architecture. Finally I demonstrate that dynamic compilation can be used to exploit overlapping memory regions in video compression applications. Program performance in some cases has been compared to that of hand tuned assembly codes where available. It has been shown that dynamically generated code demonstrates similar performances to the hand tuned codes in some cases and outperform them in others.