Komodo
- Start date: 16.08.2001
- End date: 31.12.2004
- Funded by: DFG (Deutsche Forschungsgemeinschaft)
- Local head of project: Prof. Dr. Theo Ungerer
- Local scientists: Sascha Uhrig
- External scientists / cooperations: Uwe Brinkschulte, Florentin Picioroaga, Etienne Schneider (Department for Process Control, Automation and Robotics, University of Karlsruhe)
Abstract
Whithin the Komodo project a real-time capable multithreaded Java microcontroller and the dedicated Java Virtual Machine (JVM) and the Application Programming Interface (API) were developed. The microcontroller is available as an abstract software simulator (written in Java) as well as a VHDL model. The VHDL model was used for the implementation of a FPGA prototype. The current version realises six hardware thread slots with altogether four different scheduling algorithms. Along with the processor core, the prototype also contains additional peripheral units for data transmission and signal processing. Also, an informal synthesis was accomplished with a 0.18 micron ASIC technology and 16 thread slots.
Description
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 |
Design and implementation of the middleware - Impact of the IST concept - Evaluation of scheduling strategies Design of real-time benchmarks Evaluation with application examples |
Integration of 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
Publications
2005
- Energy Management for Embedded Multithreaded Processors with Integrated EDF Scheduling
Sascha Uhrig, Theo Ungerer
18th International Conference on Architecture of Computing Systems, Hall in Tirol/Innsbruck, Austria, pages 1-17, March 2005.
2004
- Real-Time Garbage Collection for a Multithreaded Java Microcontroller
Matthias Pfeffer, Theo Ungerer, Stephan Fuhrmann, Jochen Kreuzinger, Uwe Brinkschulte
Journal of Real Time Systems, volume 26, number 1, pages 89-106, 2004 - Dynamic Real-Time Reconfiguration on a Multithreaded Java-Microcontroller
M. Pfeffer, Th. Ungerer
International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC 2004), Vienna, Austria, pages 86-92, May 2004 - Fine-Grained Power Management for Multithreaded Processor Cores
S. Uhrig, Th. Ungerer
ACM Symposium on Applied Computing (SAC 2004), Nicosia, Cyprus, March 2004 - Fine-Grained Power Management for Real-Time Embedded Processors
S. Uhrig, Th. Ungerer
RTS Embedded Systems, Paris, France, pages 129-146, March 2004 - Optimierung des Energieverbrauchs in echtzeitfähigen, mehrfädigen Prozessoren
Sascha Uhrig
Dissertation, Universität Augsburg.
Erstgutachter: Professor Dr. Theo Ungerer
Zweitgutachter: Professor Dr. Uwe Brinkschulte, Universität Karlsruhe - Ein echtzeitfähiges Java-System für einen mehrfädigen Java-Mikrocontroller
Matthias Pfeffer
Dissertation, Universität Augsburg.
Erstgutachter: Professor Dr. Theo Ungerer
Zweitgutachter: Professor Dr. Uwe Brinkschulte, Universität Karlsruhe
2003
- Hardware-based Power Management for Real-Time Applications
S. Uhrig, Th. Ungerer
Second International Symposium on Parallel and Distributed Computing (ISPDC), Ljubljana, Slovenia, October 2003 - Real-time event-handling and scheduling on a multithreaded Java microcontroller
J. Kreuzinger, U. Brinkschulte, M. Pfeffer, S. Uhrig, Th. Ungerer
Microprocessors and Microsystems, volume 27, number 1, pages 19-31, 2003 - Der Komodo Mikrocontroller
Sascha Uhrig
Technical Report, Institute of Computer Science, University of Augsburg, July 2003
2003-03
2002
- Implementing Real-time Scheduling Within a Multithreaded Java Microcontroller
S. Uhrig, C. Liemke, M. Pfeffer, J. Becker, U. Brinkschulte, Th. Ungerer
Proceedings of the 6th Workshop on Multithreaded Execution, Architecture and Compilation MTEAC-6 in Association with the 35th International Symposium on Microarchitecture (Micro-35), Istanbul, Turkey, pages 57-64, 2002 - A Real-time Java System on a Multithreaded Java Microcontroller
M. Pfeffer, S. Uhrig, Th. Ungerer, U. Brinkschulte
International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC 2002), Washington D.C., USA, April/May 2002 - Connecting Peripheral Interfaces to a Multithreaded Java Microcontroller
S. Uhrig, U. Brinkschulte, M. Pfeffer, Th. Ungerer
Workshop on Java in Embedded Systems, ARCS 2002, Karlsruhe, Germany, April 2002 - A Scheduling Technique Providing a Strict Isolation of Real-time Threads
U. Brinkschulte, J. Kreuzinger, M. Pfeffer, Th. Ungerer
Seventh IEEE International Workshop on Object-oriented Real-time Dependable Systems, WORDS 2002, San Diego, USA, January 2002
2001
- A Microkernel Middleware Architecture for Distributed Embedded Real-Time Systems
U. Brinkschulte, A. Bechina, F. Picioroaga, E. Schneider, Th. Ungerer, J. Kreuzinger, M. Pfeffer
20th Symposium on Reliable Distributed Systems, New Orleans, USA, October 2001 - Real-time Garbage Collection for a Multithreaded Java Microcontroller
S. Fuhrmann, M. Pfeffer, J. Kreuzinger, Th. Ungerer, U. Brinkschulte
The Fourth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC), Magdeburg, Germany, pages 69-76, May 2001.
Reprinted in: Real-Time Systems Journal, 26, 1, Januar 2004, 89-106.
Reprinted in: Real-Time Systems Journal (Kluwer Pub.) 2003.
2000
- Real-time Scheduling on Multithreaded Processors
J. Kreuzinger, A. Schulz, M. Pfeffer, T. Ungerer, U. Brinkschulte, C. Krakowski
Real-Time Computing Systems and Applications (RTCSA), Cheju Island, South Korea, pages 155-159, December 2000 - Echtzeitfähige Ereignisbehandlung mit Hilfe eines mehrfädigen Java-Prozessorkerns für Systems-on-a-Chip
J. Kreuzinger, M. Pfeffer, S. Uhrig, T. Ungerer, U. Brinkschulte
Mikroelektronik für die Informationstechnik, ITG Workshop, Darmstadt, Germany, pages 259-263, November 2000 - Performance Evaluations and Chip-Space Requirements of a Multithreaded Java Microcontroller
J. Kreuzinger, R. Zulauf, A. Schulz, Th. Ungerer, M. Pfeffer, U. Brinkschulte, C. Krakowski
Second Annual Workshop on Hardware Support for Objects and Microarchitectures for Java in conjunction with ICCD '00, Austin, TX, USA, pages 32-36, September 2000 - A Microkernel Architecture for a Highly Scalable Real-Time Middleware
U. Brinkschulte, C. Krakowski, J. Riemschneider, J. Kreuzinger, M. Pfeffer, T. Ungerer
Real-TimeTechnology and Applications Symposium (RTAS) wip, Washington D.C., USA, May/June 2000 - Performance Evaluations of a Multithreaded Java Microcontroller
J. Kreuzinger, M. Pfeffer, A. Schulz, T. Ungerer, U. Brinkschulte, C. Krakowski
Parallel and Distributed Processing Techniques and Applications (PDPTA) 2000, Las Vegas, Nevada, USA, pages 95-99, June 2000
1999
- Interrupt Service Threads - A New Approach to Handle Multiple Hard Real-Time Events on a Multithreaded Microcontroller
U. Brinkschulte, C. Krakowski, J. Kreuzinger, T. Ungerer
Real-Time Systems Symposium (RTSS), Phoenix, AZ, USA, pages 11-15, December 1999 - Ein mehrfädiger Java-Mikrocontroller für eingebettete Systeme
U. Brinkschulte, C. Krakowski, J. Kreuzinger, T. Ungerer
Architektur von Rechnersystemen (ARCS) Workshop 99, Jena, Germany, pages 35-42, October 1999 - A Multithreaded Java Microcontroller for Thread-Oriented Real-Time Event-Handling
U. Brinkschulte, C. Krakowski, J. Kreuzinger, T. Ungerer
Parallel Architectures and Compilation Techniques (PACT), Newport Beach, USA, pages 34-39, October 1999 - The Komodo Project: Thread-based Event Handling Supported by a Multithreaded Java Microcontroller
U. Brinkschulte, C. Krakowski, J. Kreuzinger, R. Marston, T. Ungerer
25th EUROMICRO Conference, Milano, Italy, pages 122-128, September 1999
1998
- Thread-basierte Ereignisbehandlung auf Java-Prozessoren in eingebetteten Systemen
U. Brinkschulte, T. Ungerer
Workshop JAVA und Eingebettete Systeme, Karlsruhe, Germany pages 45-54, September 1998