Results 1 - 10
of
12
The Embedded Java Benchmark Suite JemBench
"... Requirements to embedded systems increase steadily. In parallel, also the performance of the processors used in these systems is improved leading to multithreaded and/or multicore architectures. Depending on the type of the embedded system, using Java is a more and more popular way for software deve ..."
Abstract
-
Cited by 8 (8 self)
- Add to MetaCart
Requirements to embedded systems increase steadily. In parallel, also the performance of the processors used in these systems is improved leading to multithreaded and/or multicore architectures. Depending on the type of the embedded system, using Java is a more and more popular way for software development. In this paper, we present a Java benchmark suite that enables the comparison of different embedded Java platforms while solely assuming the availability of a CLDC API, the minimal configuration defined for the J2ME. The core of the benchmark suite consists of adapted realworld applications. Furthermore, the suite contains benchmarks to explore multi-core/multi-threaded systems. Hence, it is possible to determine the gain of a parallel execution platform compared to sequential execution. Additionally, the penalty of a sequential program running on a parallel platform can be measured. Our benchmarks are structured in micro, kernel, application, parallel, and streaming benchmarks. 1.
Scheduling hard real-time garbage collection
- In IEEE Real-Time Systems Symposium (RTSS
, 2009
"... Abstract—Managed languages such as Java and C # are increasingly being considered for hard real-time applications because of their productivity and software engineering advantages. Automatic memory management, or garbage collection, is a key enabler for robust, reusable libraries, yet remains a chal ..."
Abstract
-
Cited by 6 (3 self)
- Add to MetaCart
Abstract—Managed languages such as Java and C # are increasingly being considered for hard real-time applications because of their productivity and software engineering advantages. Automatic memory management, or garbage collection, is a key enabler for robust, reusable libraries, yet remains a challenge for analysis and implementation of real-time execution environments. This paper comprehensively compares the two leading approaches to hard real-time garbage collection. While there are many design decisions involved in selecting a real-time garbage collection algorithm, for timebased garbage collectors researchers and practitioners remain undecided as to whether to choose periodic scheduling or slackbased scheduling. A significant impediment to valid experimental comparison is that the commercial implementations use completely different proprietary infrastructures. Here, we present Minuteman, a framework for experimenting with realtime collection algorithms in the context of a high-performance execution environment for real-time Java. We provide the first comparison of the two approaches, both experimentally using realistic workloads, and analytically in terms of schedulability. I.
Test-Based Inference of Polynomial Loop-Bound Functions ∗
"... This paper presents an interpolation-based method of inferring arbitrary degree loop-bound functions for Java programs. Given a loop, by its “loop-bound function ” we mean a function with the numeric program variables as its parameters, that is used to bound the number of loop-iterations. Using our ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
This paper presents an interpolation-based method of inferring arbitrary degree loop-bound functions for Java programs. Given a loop, by its “loop-bound function ” we mean a function with the numeric program variables as its parameters, that is used to bound the number of loop-iterations. Using our analysis, loopbound functions that are polynomials with natural, rational or real coefficients can be found. Analysis of loop bounds is important in several different areas, including worst-case execution time (WCET) and heap consumption analysis, optimising compilers and termination-analysis. While several other methods exist to infer numerical loop bounds, we know of no other research on the inference of non-linear loopbound functions. Additionally, the inferred bounds are provable using external tools, e.g. KeY.
Exhaustive Testing of Safety Critical Java
"... With traditional testing, the test case has no control over non-deterministic scheduling decisions, and thus errors dependent on scheduling are only found by pure chance. Java Path Finder (JPF) is a specialized Java virtual machine that can systematically explore execution paths for all possible sch ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
With traditional testing, the test case has no control over non-deterministic scheduling decisions, and thus errors dependent on scheduling are only found by pure chance. Java Path Finder (JPF) is a specialized Java virtual machine that can systematically explore execution paths for all possible schedulings, and thus catch these errors. Unfortunately, execution-based model checkers, including JPF, cannot be easily adapted to support real-time programs. We propose a scheduling algorithm for JPF which allows testing of Safety Critical Java (SCJ) applications with periodic event handlers at SCJ levels 0 and 1 (without aperiodic event handlers). The algorithm requires that deadlines are not missed and that there is an execution time model that can give best- and worst-case execution time estimates for a given program path and specific program inputs. Our implementation, named R SJ, allows to search for scheduling dependent memory access errors, certain invalid argument errors, priority ceiling emulation protocol violations, and failed assertions in application code in SCJ programs for levels 0 and 1. It uses the execution time model of the Java Optimized Processor (JOP). We test our tool with
Model Checking Real-time Java
"... Abstract. The main challenges in model checking real-time Java programs are scalability and compliance with the Real-time Specification for Java (RTSJ) semantics. A model checker for RTSJ programs has to support the notion of thread periods and priority-preemptive scheduling as well as understand th ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Abstract. The main challenges in model checking real-time Java programs are scalability and compliance with the Real-time Specification for Java (RTSJ) semantics. A model checker for RTSJ programs has to support the notion of thread periods and priority-preemptive scheduling as well as understand the region-based memory model introduced by the specification. We present the R J model checker for multi-threaded RTSJ programs, which is based on Java PathFinder. R J explores execution paths that correspond to priority-preemptive schedules and involve valid sequences of thread releases with respect to their periods and priorities. The other novel features of our work are an abstraction of time based on thread periods, and a model of RTSJ memory regions and API. We evaluated our approach on real-time benchmark that models an aircraft collision detection algorithm implemented in real-time Java. Thanks to our precise account of RTSJ semantics, R J was able to verify the application and reported no spurious errors. 1
The Design of SafeJML, a Specification Language for SCJ with Support for WCET Specification
, 2010
"... ..."
High-level Programming of Embedded Hard Real-Time Devices
"... While managed languages such as C # and Java have become quite popular in enterprise computing, they are still considered unsuitable for hard real-time systems. In particular, the presence of garbage collection has been a sore point for their acceptance for low-level system programming tasks. Realti ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
While managed languages such as C # and Java have become quite popular in enterprise computing, they are still considered unsuitable for hard real-time systems. In particular, the presence of garbage collection has been a sore point for their acceptance for low-level system programming tasks. Realtime extensions to these languages have the dubious distinction of, at the same time, eschewing the benefits of highlevel programming and failing to offer competitive performance. The goal of our research is to explore the limitations of high-level managed languages for real-time systems programming. To this end we target a real-world embedded platform, the LEON3 architecture running the RTEMS real-time operating system, and demonstrate the feasibility of writing garbage collected code in critical parts of embedded systems. We show that Java with a concurrent, real-time garbage collector, can have throughput close to that of C programs and comes within 10 % in the worst observed case on realistic benchmark. We provide a detailed breakdown of the costs of Java features and their execution times and compare to real-time and throughput-optimized commercial Java virtual machines.
Application-Based Systems]: Real-time and embedded systems
"... Real-time systems, and in particular safety-critical systems, are a rich source of challenges for the program verification community as software errors can have catastrophic consequences. Unfortunately, it is nearly impossible to find representative safety-critical programs in the public domain. Thi ..."
Abstract
- Add to MetaCart
Real-time systems, and in particular safety-critical systems, are a rich source of challenges for the program verification community as software errors can have catastrophic consequences. Unfortunately, it is nearly impossible to find representative safety-critical programs in the public domain. This has been significant impediment to research in the field, as it is very difficult to validate new ideas or techniques experimentally. This paper presents open challenges for verification of real-time systems in the context of the Real-time Specification for Java. But, our main contribution is a family of programs, called CDx, which we present as an open source benchmark for the verification community.
Worst-Case Analysis of Heap Allocations ⋆
"... Abstract. In object oriented languages, dynamic memory allocation is a fundamental concept. When using such a language in hard real-time systems, it becomes important to bound both the worst-case execution time and the worst-case memory consumption. In this paper, we present an analysis to determine ..."
Abstract
- Add to MetaCart
Abstract. In object oriented languages, dynamic memory allocation is a fundamental concept. When using such a language in hard real-time systems, it becomes important to bound both the worst-case execution time and the worst-case memory consumption. In this paper, we present an analysis to determine the worst-case heap allocations of tasks. The analysis builds upon techniques that are well established for worst-case execution time analysis. The difference is that the cost function is not the execution time of instructions in clock cycles, but the allocation in bytes. In contrast to worst-case execution time analysis, worst-case heap allocation analysis is not processor dependent. However, the cost function depends on the object layout of the runtime system. The analysis is evaluated with several real-time benchmarks to establish the usefulness of the analysis, and to compare the memory consumption of different object layouts. 1
Quantitative dynamic-memory analysis for Java ‡
"... Space- and time-predictability are hard to achieve for object-oriented languages with automated dynamic-memory management. Although there has been significant work to design APIs, such as the Real-Time Specification for Java (RTSJ), and to implement garbage collectors to enable real-time performance ..."
Abstract
- Add to MetaCart
Space- and time-predictability are hard to achieve for object-oriented languages with automated dynamic-memory management. Although there has been significant work to design APIs, such as the Real-Time Specification for Java (RTSJ), and to implement garbage collectors to enable real-time performance, quantitative space analysis is still in its infancy. This work presents the integration of a series of compile-time analysis techniques to help predicting quantitative memory usage. In particular, we focus on providing tool-assistance for identifying RTSJ scoped-memory regions, their sizes, and overall memory usage. First, the tool-suite synthesizes a memory organization where regions are associated with methods. Second, it infers their sizes in parametric closedform in terms of relevant program variables. Third, it exhibits a parametric upper-bound on the amount of available free memory required to execute a method. The experiments carried out with a RTSJ benchmark, a real-time aircraft collision detector, show that semi-automatic, tool-assisted generation of scoped-based code is both helpful and doable. key words: Java Real-Time; Scoped-Memory; Quantitative Memory Requirements; Static Analysis 1.

