Software Washing Machine for Embedded Code

Motivation

  • Today´s embedded systems are software-dominated
  • Initial C/C++ implementation is often inefficient (e.g. automatically generated or written for readability)
  • Code optimization at the source code level complements existing optimizations in C/C++ compilers

Objectives

  • Improve the efficiency of embedded software
    • Performance
    • Code size
    • Energy/memory consumption
  • Develop reusable, target machine independent code optimizations at the source code level

Project description

An initial C/C++ implementation of embedded software is frequently given in the form of an unoptimized reference implementation or is automatically generated from high-level software development tools. Such an initial implementation is usually inefficient w.r.t. performance, code size and/or energy consumption when mapped to a target processor by a compiler. Recent research has introduced the concept of a "Software Washing Machine" that takes unoptimized source code and emits optimized source code by applying code transformations at the C/C++ level. The resulting code can then be mapped to a given target processor by a C/C++ compiler. Since such transformations go well beyond the scope of traditional code optimization in a compiler, high efficiency gains are possible. Moreover, in connection with existing compilers, C/C++ level code optimizations are inherently reusable for various target processors. In this project, the efficiency gains enabled by a Software Washing Machine are evaluated for complex embedded applications. Promising code transformations are being identified and partially automated.

Contact

Stefan Boßung (Kraemer)