Abstract
The performance of a Java Virtual Machine (JVM) interpreter running on a very long instruction word (VLIW) processor can be improved by means of pipelining. While one bytecode is in its execute stage, the next bytecode is in its decode stage, and the next bytecode is in its fetch stage. The paper describes how we implemented threading and pipelining by rewriting the source code of the interpreter and several modifications in the compiler. Experiments for evaluating the effectiveness of pipelining are described. Pipelining improves the execution speed of a threaded interpreter by 19.4% in terms of instruction count and 14.4% in terms of cycle count. Most of the simple bytecodes, like additions and multiplications, execute in four cycles. This number corresponds to the branch latency of our target VLIW processor. Thus most of the code of the interpreter is executed in branch delay slots.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Tim Lindholm and Frank Yellin. The Java Virtual Machine Specification. Addison-Wesley, Reading, Massachusetts, 1996. 35
Harlan McGhan and Mike O’Conner. PicoJava: A Direct Execution Engine for Java Bytecode. IEEE Computer, 31(10):22–30, October 1998. 35
Ali-Reza Adl-Tabatabai, Michal Cierniak, Guei-Yuan Lueh, Vishesh M. Parikh, and James M. Stichnoth. Fast, Effective Code Generation in a Just-In-Time Java Compiler. In Proceedings of the 1998 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 280–290, Montreal, Canada, 1998. 35
Andreas Krall. Efficient JavaVM Just-in-Time Compilation. In Proceedings of the 1998 International Conference on Parallel Architectures and Compilation Techniques, pages 205–212, Paris, France, October 1998. 35
Andreas Krall, Anton Ertl, and Michael Gschwind. JavaVM Implementation: Compilers versus Hardware. In John Morris, editor, Computer Architecture 98 (ACAC’ 98), Australian Computer Science Communications, pages 101–110, Perth, 1998. Springer. 36
Gert A. Slavenburg. TM1000 Databook. TriMedia Division, Philips Semiconductors, TriMedia Product Group, 811 E. Arques Avenue, Sunnyvale, CA 94088, http://www.trimedia.philips.com, 1997. 36, 37
Gerrit A. Slavenburg, Selliah Rathnam, and Henk Dijkstra. The TriMedia TM-1 PCI VLIW Mediaprocessor. In Hot Chips 8, Stanford, California, August 1996. 36, 37
Vicky H. Allan, Reese B. Jones, Randall M. Lee, and Stephan J. Allan. Software Pipelining. ACM Computing Surveys, 27(3), September 1995. 36
Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques and Tools. Addison-Wesley Series in Computer Science. Addison-Wesley Publishing Company, Reading, Massachusetts, 1985. 36, 38
The Kaffe Homepage: http://www.kaffe.org. 37
The Personal Java Homepage: http://java.sun.com/products/personaljava. 37, 43
James R. Bell. Threaded Code. Communications of the ACM, 16(6):370–372, 1973. 38
Paul Klint. Interpretation Techniques. Software — Practice & Experience, 11(9):963–973, September 1981. 38
M. Anton Ertl. Stack Caching for Interpreters. In Proceedings of the SIGPLAN’ 95 Conference on Programming Language Design and Implementation, pages 315–327, La Jolla, California, June 1995. 43
Jan Hoogerbrugge and Lex Augusteijn. Instruction Scheduling for TriMedia. Journal of Instruction-Level Parallelism, 1(1), February 1999. 43
M. Anton Ertl. Implementation of Stack-Based Languages on Register Machines. PhD thesis, Technische Universitätt Wien, Austria, 1996. 46
Todd A. Proebsting. Optimizing an ANSI C Interpreter with Superoperators. In Proceedings of the Fifteenth Annual ACM Symposium on Principles of Programming Languages, pages 322–332, 1995. 46
Ian Piumarta and Fabio Riccardi. Optimizing direct threaded code by selective inlining. In Proceedings of the 1998 ACM SIGPLAN Conference on Programming Language Design and Implementation, Montreal, Canada, June 1998. 46
Jan Hoogerbrugge, Lex Augusteijn, Jeroen Trum, and Rik van de Wiel. A Code Compression System Based on Pipelined Interpreters. Software — Practice & Experience, 29(11):1005–1023, September 1999. 47
Intel, Santa Clara, CA. IA-64 Application Developer’s Architecture Guide, 1999. 48
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2000 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Hoogerbrugge, J., Augusteijn, L. (2000). Pipelined Java Virtual Machine Interpreters. In: Watt, D.A. (eds) Compiler Construction. CC 2000. Lecture Notes in Computer Science, vol 1781. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-46423-9_3
Download citation
DOI: https://doi.org/10.1007/3-540-46423-9_3
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-67263-0
Online ISBN: 978-3-540-46423-5
eBook Packages: Springer Book Archive