Wednesday 11 July 2012
Laboratory: Verimag (http://www-verimag.imag.fr/)
Team: SYNCHRONE (http://www-verimag.imag.fr/SYNCHRONE)
Supervisor: Matthieu Moy <Matthieu.Moy@imag.fr>
The silicon industry is widely adopting a methodology called Transaction-Level Modeling (TLM), that consists essentially in writing abstract, but yet executable models the hardware contained in a Chip.
SystemC is a C++ library used for the description of SoCs at different levels of abstraction, including TLM. It comes with a simulation environment, and became a standard (IEEE 1666). SystemC offers a set of primitives for the description of parallel activities representing the physical parallelism of the hardware blocks. The TLM level of abstraction can be described with SystemC.
SystemC models simulate orders of magnitude faster than the low-level Register Transfer-Level (RTL) implementation. However, modern Systems-on-Chips comprising tens of processors already reach the limits of the approach.
Because SystemC was implemented as a library, it is possible to compile a SystemC program with any C++ compiler. But using a general-purpose compiler misses some optimization opportunities. Experiments have been carried out to build a SystemC-specific compiler. We already have a SystemC front-end called PinaVM, and prototyped an optimizer for SystemC programs. The optimizer is very limited in that most programs still cannot be optimized, but promising since it shows a 20x speedup on simple best-cases programs.
The goal of the internship is to write an optimizer for SystemC programs that is able to optimize significantly real-life programs. The existing prototype can serve as a starting point, but new techniques like simple static analysis should be added to let the tool perform aggressive optimizations even in non-trivial cases.
The tool developed will be tested against some reasonably large SystemC programs.
Programming skills in C++
Compilation (notion of control-flow graph, basic-blocks...). Knowledge of LLVM is a plus.
Matthieu Moy is assistant professor in Verimag and the Ensimag school. He started working on SystemC in 2002 during his Ph. D.