ABSTRACT
Compile-only JVMs for resource-constrained embedded systems have the potential for using device resources more efficiently than interpreter-only systems since compilers can produce significantly higher quality code and code can be stored and reused for future invocations. However, this additional storage requirement for reuse of native code bodies, introduces memory overhead not imposed in interpreter-based systems.In this paper, we present a Java Virtual Machine (JVM) extension for adaptive code unloading that significantly reduces the memory requirements imposed by a compile-only JVM. The extension features an unloader that uses execution behavior to adaptively determine when to unload as well as what code to unload. We implement and empirically identify a set of unloading strategies that enable significant code size reduction (43%-61%). This reduction translates into significant execution time benefits for the benchmarks and JVM configurations that we studied. As such, by using adaptive code unloading, we make compile-only JVMs for embedded devices more feasible.
- A. Acuaviva, L. Benini, and B. Riccó. Energy characterization of embedded real-time operating systems. In Workshop on Compilers and Operating Systems for Low Power (COLP), pages 13--18, September 2001.]] Google ScholarDigital Library
- A. Agarwal, J. Hennessy, and M. Horowitz. Cache performance of operating system and multiprogramming workloads. ACM Transactions on Computer Systems, 7(2):184--215, May 1989.]] Google ScholarDigital Library
- M. Alt, C. Ferdinand, F. Rartin, and R. Wilhelm. Cache behavior prediction by abstract interpretation. Static Analysis Symposium, 1145:51--66, September 1996.]] Google ScholarDigital Library
- T. E. Andersson, H. M. Levy, B. N. Bershad, and E. D. Lazowska. The interaction of architecture and operating system design. In 4th International Conference on Architectural Support for Programming Languages and Operating Systems, April 1991.]] Google ScholarDigital Library
- T. M. Austen, E. Larson, and D. Ernst. Simplescalar: An infrastructure for computer system modeling. IEEE Computer, 35(2):59--67, February 2002.]] Google ScholarDigital Library
- O. Avissar and R. Barua. An optimal memory allocation scheme for scratch-pad-based embedded systems. ACM Transactions on Embedded Computing Systems (TECS), 1(1), November 2002.]] Google ScholarDigital Library
- M. Campoy, A. P. Ivars, and J. V. B. Mataix. Static use of locking caches in multitask preemptive real-time systems. In Proceedings of the IEEE/IEE Real-Time Embedded System Workshop, December 2001.]]Google Scholar
- M. Corti, R. Brega, and T. Gross. Approximation of worst-case execution time for preemptive multitasking system. In Proceedings of the ACM SIGPLAN 2000 Workshop on Languages, Compilers, and Tools for Embedded Systems, June 2000.]] Google ScholarDigital Library
- R. P. Dick, G. Lakshminaryana, A. Ranghunathan, and N. K. Jha. Power analysis of embedded operating systems. In Proceedings of the 37th Conference on Design Automation, pages 312--315, June 2000.]] Google ScholarDigital Library
- EEMBC, the embedded microprocessor benchmark consortium. http://www.eembc.org/.]]Google Scholar
- M. R. Gathaus, J. S. Ringenberg, D. Ernst, T. M. Austen, T. Mudge, and R. B. Brown. Mibench: A free commercially representative embedded benchmark suite. In Proceedings of the IEEE 4th Annual Workshop on Workload Characterization, December 2001.]] Google ScholarDigital Library
- D. K.astner and S. Thesing. Cache aware pre-runtime scheduling. Journal of Real-Time Systems, 17:235--256, 1999.]] Google ScholarDigital Library
- D. B. Kirk. Smart (strategic memory allocation for real-time) cache design. In Proceedings of 10th Real-Time Systems Symposium (RTSS), pages 229--237, December 1989.]]Google ScholarCross Ref
- C.-G. Lee, J. Hahn, Y.-M. Seo, S. L. Min, R. Ha, S. Hong, C. Y. Park, M. Lee, and C. S. Kim. Analysis of cache-related preemption delay in xed-priority preemptive scheduling. IEEE Transactions on Computers, 47(6), June 1998.]] Google ScholarDigital Library
- T. Li and L. K. John. Run-time modeling and estimation of operating system power consumption. In International Conference on Measurements and Modeling of Computer Systems, June 2003.]] Google ScholarDigital Library
- Y.-T. Li and S. Malik. Performance analysis of embedded software using implicit path enumeration. In ACM SIGPLAN Workshop on Languages, Compilers and Tools for Real-Time Systems, June 1995.]] Google ScholarDigital Library
- T. Lundqvist and P. Stenstr. om. An integrated path and timing analysis method based on cache-level symbolic execution. Real-Time Systems, 17(2/3):183--207, November 1999.]] Google ScholarDigital Library
- J. C. Mogul and A. Borg. The effect of context switches on cache performance. In Proceedings of the 4th International Conference on Architectural Support for Programming Languages and Operating Systems, pages 75--84, April 1991.]] Google ScholarDigital Library
- F. Mueller. Timing analysis for instruction caches. Real-Time Systems, 18(2/3):209--239, May 2000.]] Google ScholarDigital Library
- Newlib. http://sources.redhat.com/newlib/.]]Google Scholar
- J. K. Ousterhout. Why arent operating systems getting faster as fast as hardware? In USENIX summer conference, June 1990.]]Google Scholar
- I. Puaut and D. Decotigny. Low-complexity algorithms for static cache locking in multitasking hard real-time systems. In Proceedings of the 23rd real-time systems symposium, December 2002.]] Google ScholarDigital Library
- uC/OS-II RTOS. http://www.ucos-ii.com/.]]Google Scholar
- X. Vera and B. Lisper. Data cache locking for higher program predictability. In International Conference on Measurement and Modelling of Computer Systems, pages 272--282, 2003.]] Google ScholarDigital Library
- K. Weiss, T. Steckstor, and W. Rosentiel. Performance analysis of a rtos by emulation of an embedded system. In Tenth IEEE International Workshop on Rapid System Prototyping, June 1999.]] Google ScholarDigital Library
- A. Wolfe. Software-based cache partitioning for real-time applications. In Proceedings of the 3rd international workshop on responsive computer systems, September 1993.]]Google Scholar
Index Terms
- Adaptive code unloading for resource-constrained JVMs
Recommendations
Adaptive code unloading for resource-constrained JVMs
LCTES '04Compile-only JVMs for resource-constrained embedded systems have the potential for using device resources more efficiently than interpreter-only systems since compilers can produce significantly higher quality code and code can be stored and reused for ...
The design, implementation, and evaluation of adaptive code unloading for resource-constrained devices
Java Virtual Machines (JVMs) for resource-constrained devices, e.g., hand-helds and cell phones, commonly employ interpretation for program translation. However, compilers are able to produce significantly better code quality, and, hence, use device ...
Profile-driven code unloading for resource-constrained JVMs
PPPJ '04: Proceedings of the 3rd international symposium on Principles and practice of programming in JavaJava virtual machines (JVMs) have become increasingly popular for execution of a wide range of applications on mobile and embedded devices. Most JVMs for such devices execute programs using interpretation. However, JVMs that use dynamic compilation have ...
Comments