Next Generation Simulation for Next Generation Software and Architectures


CoGenT Project (for Co-Generation of Translators/Tools), seeks to develop a new paradigm for simulation of computer systems, with the goal of enabling a new level of understanding of factors that limit performance, and thus ultimately achieving significant increases in the performance of those systems. This new paradigm treats the total simulation environment as a modular, flexible, integrated, and carefully engineered experimental apparatus with a sophisticated instrumentation harness and data analysis capabilities. Rather than treat the hardware simulation, run-time system, compiler, and instrumentation as isolated components, the new approach acknowledges their implicit interdependences and makes those relationships explicit at a higher level of abstraction. One goal is to enable the researcher to specify a change to one component, and have the other components automatically adapt their optimizations and instrumentation in an appropriate manner. When it is necessary to make a change that is not directly accommodated by the higher-level specification, another goal is that the engineering approach of the environment’s structure will minimize the work that is required. The new paradigm also seeks to raise instrumentation to a new level of capability in which complex interdependencies of hardware, software, and applications can be explored in a meaningful manner. An especially important goal is to achieve high simulation performance, because the greatest understanding is often gained from the ability to run more experiments in a given time, so as to gather more data.

This work will explore ways of representing an architecture and micro-architecture and generating translation rules for the compiler. Based on this foundation, the project will develop ways automatically to generate simulator, run-time system, and compiler components that are matched to each other, for common avenues of experimental exploration. At the same time, the effort will research the question of how to structure a modern simulation environment so that researchers easily can modify it in novel ways, retarget it to different architectures and languages, and rehost it to new systems. Development of new mechanisms for instrumenting a simulation from a higher-level perspective, and for mining the output of the instrumentation is a key contribution. The research will seek a new approach that balances support for modern languages and run-time environments against simulator performance. Dynamic optimization of simulation, adapting and specializing simulation to the application code at run time, will be another area of research. Lastly, several motivating studies will drive the environment’s development, which should also provide novel results in architecture, cooperative hardware/software performance enhancements, and run-time and compiler optimizations.

The development of a new simulation environment with the capabilities described above will enable a new level of experimentation for enhancing computer systems performance in the computer science and engineering communities. As computers push nearer to the fundamental limits of technology, if performance increases are to continue researchers must gain a deeper understanding of the interrelated hardware and software impediments that remain to be overcome. This, in turn, leads to enhanced computational capabilities for science, engineering, and commerce. Having a robust, well-engineered, portable simulation environment that supports easy modification and instrumentation will also be highly beneficial for educational users.


This material is based upon work supported by the National Science Foundation under grant number CNS-0615074. Any opinions, findings, conclusions, or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the NSF.