This project aims to modify the representation of binary executable files by retaining information generated during various program transformations using an XML notation. If retrievable, the information lost during transformation processes could potentially improve the hardware/runtime system.
While high level programming languages support software development, computer architecture is implemented more efficiently around low level assembly/machine programming language. This gap between high level and machine level programming languages is bridged by translations performed by a compiler. A compiler performs significant analysis and translation on the high level program code program in order to generate optimized low level code. However, the original program's structural information is lost by the time the program has been translated into a low level representation. Consequently, an existing processor's architectures cannot benefit from such structural information.
Many dynamic optimizations performed in a processor, such as branch and value prediction, and many dynamic compiler optimizations, such as dynamic loop unrolling, can be expressed in a semantically rich binary file format. This project uses an XML based binary file format to express program structure. The program metadata is expressed as XML namespace tags. A processor, consisting of a meta-engine to interpret the program level structure semantic metadata, transforms the binary program in order to affect the specified dynamic optimizations before handing it over to a classical execution engine. This approach opens up many performance enhancement opportunities, controlled by the program itself. In this seed project, the execution engine is realized through a simulation environment based on Open DOS (Open Source Dynamic Optimization). A proof-of-concept compiler, XMLgcc, generates the metadata tagged binary files.
This project will result in a transformative view of processor and compiler design. This may spur processor development activity due to "soft"ization of many of the current hard features of an architecture - a corresponding compiler development has significantly lower overhead. The empirical nature of computer architecture and compilers requires a platform on which architecture and compiler variations can be implemented with low cost. Such a platform is an ideal pedagogical tool for exposing such "what if" iterative design process to computer architecture and compiler students.
The team will also develop instructional modules based on the SeeMe platform for various computer architecture and compiler (dynamic optimization) topics for graduate classes.