Worst-case execution time analysis for a Java processor

Martin Schoeberl, Wolfgang Puffitsch, Rasmus Ulslev Pedersen, Benedikt Huber

Research output: Contribution to journalJournal articleResearchpeer-review

291 Downloads (Pure)

Abstract

In this paper, we propose a solution for a worst-case execution time (WCET) analyzable Java system: a combination of a time-predictable Java processor and a tool that performs WCET analysis at Java bytecode level. We present a Java processor, called JOP, designed for time-predictable execution of real-time tasks. The execution time of bytecodes, the instructions of the Java virtual machine, is known to cycle accuracy for JOP. Therefore, JOP simplifies the low-level WCET analysis. A method cache, which fills whole Java methods into the cache, simplifies cache analysis. The WCET analysis tool is based on integer linear programming. The tool performs the low-level analysis at the bytecode level and integrates the method cache analysis. An integrated data-flow analysis performs receiver-type analysis for dynamic method dispatches and loop-bound analysis. Furthermore, a model checking approach to WCET analysis is presented where the method cache can be exactly simulated. The combination of the time-predictable Java processor and the WCET analysis tool is evaluated with standard WCET benchmarks and three real-time applications. The WCET friendly architecture of JOP and the integrated method cache analysis yield tight WCET bounds. Comparing the exact, but expensive, model checking-based analysis of the method cache with the static approach demonstrates that the static approximation of the method cache is sufficiently tight for practical purposes.
Original languageEnglish
JournalSoftware: Practice & Experience
Volume40
Issue number6
Pages (from-to)507-542
ISSN0038-0644
DOIs
Publication statusPublished - 2010
Externally publishedYes

Fingerprint

Dive into the research topics of 'Worst-case execution time analysis for a Java processor'. Together they form a unique fingerprint.

Cite this