|Funded by:||DFG (Deutsche Forschungsgemeinschaft)|
|Local project leader:||Prof. Dr. Theo Ungerer, Dr. Sascha Uhrig|
|External scientists / cooperations:||
Uwe Brinkschulte, Florentin Picioroaga, Etienne Schneider (Department for Process Control, Automation and Robotics, University of Karlsruhe)
Real-time Java Based on a Multithreaded Java-microcontroller
State-of-the-art embedded systems are programmed in assembly or C/C++ languages. Java features several advantages with respect to real-time systems: The object orientation of Java language supports easy programming, reusability, and robustness. Java bytecode is portable, of small size, and secure due to the bytecode verifier in the Java-Virtual-Machine (JVM). However, the use of Java is hardly possible because of its high hardware requirements and unpredictable real-time behavior. Both problems are solved with the design of a real-time, multithreaded Java-microcontroller. A Java-microcontroller executes Java bytecode instructions directly in hardware raising the performance of Java applications and decreasing the hardware requirements compared to a Java interpreter or Just-In-Time (JIT) compiler.
Contemporary microcontrollers activate Interrupt-Service-Routines (ISRs) for event handling. A multithreaded processor provides several register sets and program counters on a chip and enables overlapped execution of different threads. Assuming a multithreaded processor core in a microcontroller allows to trigger so-called Interrupt-Service-Threads (ISTs) instead of ISRs for event handling. Thread activation is extremely fast due to the multiple register sets on the multithreaded processor chip, thus enabling single-cycle event reaction. Because of the parallel execution, ISTs are not blocked by ISTs with higher priority, in contrast to ISRs.
Our Komodo* microcontroller combines multithreading with a pipelined Java processor core similar to the picoJava of Sun. Besides the usual priority scheme (highest priority first) a so-called guaranteed percentage scheme is supported. In the real-time application, the priorities of the ISTs are given in percentage of the microcontroller's computing power. Several different real-time conditions can be fulfilled simultaneously.
In the Komodo microcontroller, a priority manager selects in a very fine-grained manner between instructions of different threads for execution. The selection depends on a counter that keeps track of the number of instructions in a period of time.
Together with Prof. Dr. Uwe Brinkschulte, Dipl.-Inform. Florentin Picioroaga, and Dipl.-Inform. Etienne Schneider of the Department for Process Control, Automation and Robotics a complete system with hardware, operating system (JVM), middleware and application (automated guided vehicles) is under development.
The following table shows the task distribution among the members of the research group:
|Prof. Dr. Theo Ungerer
Dipl.-Inform. Jochen Kreuzinger
Dipl.-Inform. Matthias Pfeffer
|Prof. Dr. Uwe Brinkschulte
Dipl.-Inform. Florentin Picioroaga
Dipl.-Inform. Etienne Schneider
|Hardware design of the Komodo microcontroller
- Software simulator
- VHDL description
- Synthesis and FPGA prototype
Real-time Komodo JVM
implementation of the middleware
- Impact of the IST concept
- Evaluation of scheduling strategies
Design of real-time benchmarks
Evaluation with application examples
hardware and software
Evaluation of the real-time Java, the interrupt service thread, and the guaranteed percentage scheduling concepts
(*) Komodo: island close to Java, which is famous for its Komodo dragons eating cavilers (Image).