Low-Power Java Co-Processor with Improved Real Time Performance and Predictability
The programming language Java has recently attracted quite a lot of interest in the embedded market (specifically mobile phones). Compared to more traditional programming languages, Java provides a number of advantages including hardware independency ("write-once, run-anywhere"), design reuse, dynamic upgrade of products, and faster time-to-market. However, there are several problems that need to be solved. These include slow execution rates, excessive memory requirements, very high power consumption mainly because of the excessive memory usage, and unpredictable real-time performance. The software approaches to increase execution speed, like Just-In-Time (JIT) compilation, increase the memory consumption and thus also power consumption. On the other hand, optimizing the Java virtual machine for small memory consumption typically decreases the speed. To solve this dilemma, the REAL-JAVA project focuses on designing an advanced Java accelerator core which has extremely low power consumption while providing sufficient performance for even the most demanding real-time telecommunication and multimedia applications. This work also includes development of software support and sophisticated garbage collection methods (possibly with HW support) for real-time Java acceleration. The accelerator core can be directly attached to any general-purpose processor core running some Java-intensive application software. In a larger perspective, our Java core is targeted for future power-critical highly parallel telecommunication and multimedia single-chip systems built on NoC platforms with heterogeneous distributed computing. These systems will be composed of hundreds of IP blocks such as different processor cores, including a number of Java accelerator cores, on-chip memories, reconfigurable logic modules, application-specific blocks, and mixed-signal interface units.