Cache-aware cross-profiling for java processors

Performance evaluation of embedded software is essential in an early development phase so as to ensure that the software will run on the embedded device's limited computing resources. Prevailing approaches either require the deployment of the software on the embedded target, which can be tedious and may be impossible in an early development phase, or rely on simulation, which can be very slow. In this paper, we introduce a customizable cross-profiling framework for embedded Java processors, including processors featuring a method cache. The developer profiles the embedded software in the host environment, completely decoupled from the target system, on any standard Java Virtual Machine, but the generated profiles represent the execution time metric of the target system. Our cross-profiling framework is based on bytecode instrumentation. We identify several pointcuts in the execution of bytecode that need to be instrumented in order to estimate the CPU cycle consumption on the target system. An evaluation using the JOP embedded Java processor as target confirms that our approach reconciles high profile accuracy with moderate overhead. Our cross-profiling framework also enables the rapid evaluation of the performance impact of possible optimizations, such as different caching strategies.

[1]  BallThomas,et al.  Exploiting hardware performance counters with flow and context sensitive profiling , 1997 .

[2]  James Gosling,et al.  The Real-Time Specification for Java , 2000, Computer.

[3]  Sheng Liang,et al.  Java Virtual Machine Profiler Interface , 2000, IBM Syst. J..

[4]  Martin Schoeberl,et al.  WCET analysis for a Java processor , 2006, JTRES '06.

[5]  Rainer G. Spallek,et al.  Bump-pointer method caching for embedded Java processors , 2007, JTRES.

[6]  David Hardin Real-time objects on the bare metal: an efficient hardware realization of the Java/sup TM/ Virtual Machine , 2001, Fourth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing. ISORC 2001.

[7]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[8]  Sascha Uhrig,et al.  jamuth: an IP processor core for embedded Java real-time systems , 2007, JTRES.

[9]  Walter Binder,et al.  Portable resource control in Java , 2001, OOPSLA '01.

[10]  Sascha Uhrig,et al.  Real-time event-handling and scheduling on a multithreaded Java microcontroller , 2003, Microprocess. Microsystems.

[11]  Jong-Deok Choi,et al.  Efficient and precise modeling of exceptions for the analysis of Java programs , 1999, PASTE '99.

[12]  Marc Feeley Polling efficiently on stock hardware , 1993, FPCA '93.

[13]  Martin Schoeberl,et al.  A Time Predictable Instruction Cache for a Java Processor , 2004, OTM Workshops.

[14]  Guy L. Steele,et al.  Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)) , 2005 .

[15]  David Gregg,et al.  A method‐level comparison of the Java Grande and SPEC JVM98 benchmark suites , 2005, Concurr. Pract. Exp..

[16]  Walter Binder,et al.  Advanced Java bytecode instrumentation , 2007, PPPJ.

[17]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[18]  Walter Binder Portable and accurate sampling profiling for Java , 2006 .

[19]  Martin Schoeberl,et al.  Cross-Profiling for Embedded Java Processors , 2008, 2008 Fifth International Conference on Quantitative Evaluation of Systems.

[20]  James R. Larus,et al.  Exploiting hardware performance counters with flow and context sensitive profiling , 1997, PLDI '97.

[21]  Walter Binder,et al.  A Portable and Customizable Profiling Framework for Java Based on Bytecode Instruction Counting , 2005, APLAS.

[22]  J. Michael O'Connor,et al.  picoJava-I: the Java virtual machine in hardware , 1997, IEEE Micro.

[23]  Luigi Carro,et al.  Low Power Java Processor for Embedded Applications , 2003, VLSI-SOC.

[24]  Walter Binder,et al.  Flexible and efficient measurement of dynamic bytecode metrics , 2006, GPCE '06.

[25]  Luigi Carro,et al.  A VLIW low power Java processor for embedded applications , 2004, Proceedings. SBCCI 2004. 17th Symposium on Integrated Circuits and Systems Design (IEEE Cat. No.04TH8784).

[26]  Rajiv Gupta,et al.  Profile-guided Java program partitioning for power aware computing , 2004, 18th International Parallel and Distributed Processing Symposium, 2004. Proceedings..

[27]  Sandhya Dwarkadas,et al.  Efficient Simulation of Parallel Computer Systems , 1991, Int. J. Comput. Simul..

[28]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[29]  Martin Schoeberl,et al.  A Java processor architecture for embedded real-time systems , 2008, J. Syst. Archit..

[30]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[31]  John R. Gurd,et al.  A join point for loops in AspectJ , 2006, AOSD '06.

[32]  Hridesh Rajan,et al.  Aspect language features for concern coverage profiling , 2005, AOSD '05.