C compiler back end for the 32-bit dual core capable DLX microprocessor - Ostrea, Allan Michael M. (2007)
As the demand for faster and more efficient processors increases, different computer architectures are being developed over the past years. Most applications are written in a high level language, so a compiler is necessary to translate the program into a sequence of low-level instructions to be loaded into the targeted processor. The Intel Microprocessors Laboratory has been developing different implementations of the 32-bit DLX microprocessor, recently completing a dual core capable DLX microprocessor. In this project, a compiler was developed to facilitate testing and to generate efficient assembly code for this new design. The input to the compiler is code written in sequential C code and the output is semi-parallelized code in DLX assembly. Utilizing the retargetable compiler lcc 3.6 for its front end, the project focused on developing a back end written in C that exploits the features of the microprocessor to generate efficient code. Autoparallelization and local optimizations were done on an extended basic block level. Autoparallelization was performed by creating a dependence graph to discover independent threads within the input code. The newly developed blocks were tested by integrating them with readily available compiler modules and checking for correctness with respect to the source code.