Exploiting static application knowledge in a Java compiler for embedded systems: a case study

  • Authors:
  • Christoph Erhardt;Michael Stilkerich;Daniel Lohmann;Wolfgang Schröder-Preikschat

  • Affiliations:
  • Friedrich-Alexander University Erlangen-Nuremberg, Germany;Friedrich-Alexander University Erlangen-Nuremberg, Germany;Friedrich-Alexander University Erlangen-Nuremberg, Germany;Friedrich-Alexander University Erlangen-Nuremberg, Germany

  • Venue:
  • Proceedings of the 9th International Workshop on Java Technologies for Real-Time and Embedded Systems
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

Offering many benefits in terms of productivity and reliability, Java is becoming an attractive choice for the field of embedded computing. However, its programming model that relies on the capabilities of just-in-time compilation limits the opportunities to generate highly optimized code in an ahead-of-time compiler. In the KESO project, a Java VM for statically-configured deeply embedded systems, we have previously used static application knowledge to create a tailored runtime environment. In this paper, we present and discuss how this static knowledge can further be exploited by our compiler in order to perform advanced optimizations that would otherwise not be achievable. We conducted a case study with the CDx real-time benchmark in which we examined the peculiarities and challenges that arise, and evaluated the effectiveness of both standard and system-model-specific compiler optimizations in the context of a static embedded application model. Our results show that incorporating the available a-priori knowledge in the compiler provides significant improvements to both footprint and runtime, and can additionally help the system integrator to identify consistency problems between the code and a higher-level system specification at an early development stage.