Abstract
Romer et al (ASPLOS 96) examined several interpreters and concluded that they behave much like general purpose integer programs such as gcc. We show that there is an important class of interpreters which behave very differently. Efficient virtual machine interpreters perform a large number of indirect branches (3.2%–13% of all executed instructions in our benchmarks, taking up to 61%–79% of the cycles on a machine with no branch prediction). We evaluate how various branch prediction schemes and methods to reduce the mispredict penalty affect the performance of several virtual machine interpreters. Our results show that for current branch predictors, threaded code interpreters cause fewer mispredictions, and are almost twice as fast as switch based interpreters on modern superscalar architectures.
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
James R. Bell. Threaded code. Communications of the ACM, 16(6):370–372, 1973.
Douglas C. Burger and Todd M. Austin. The SimpleScalar tool set, version 2.0. Technical Report CS-TR-1997-1342, University of Wisconsin, Madison, June 1997.
Robert B. K. Dewar. Indirect threaded code. Communications of the ACM, 18(6):330–331, June 1975.
K. Driesen and U. Hölzle. Accurate indirect branch prediction. In Proceedings of the 25th Annual International Symposium on Computer Architecture (ISCA-98), volume 26,3 of ACM Computer Architecture News, pages 167–178, New York, June 27-July 1 1998. ACM Press.
M. Anton Ertl. A portable Forth engine. In EuroFORTH’ 93 conference proceedings, Mariánské Lázné (Marienbad), 1993.
M. Anton Ertl. Stack caching for interpreters. In SIGPLAN’ 95 Conference on Programming Language Design and Implementation, pages 315–327, 1995.
Xavier Leroy. The ZINC experiment: an economical implementation of the ML language. Technical report 117, INRIA, 1990.
Todd A. Proebsting. Optimizing an ANSI C interpreter with superoperators. In Principles of Programming Languages (POPL’ 95), pages 322–332, 1995.
Theodore H. Romer, Dennis Lee, Geoffrey M. Voelker, Alec Wolman, Wayne A. Wong, Jean-Loup Baer, Brian N. Bershad, and Henry M. Levy. The structure and performance of interpreters. In Architectural Support for Programming Languages and Operating Systems (ASPLOS-VII), pages 150–159, 1996.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Ertl, M.A., Gregg, D. (2001). The Behavior of Efficient Virtual Machine Interpreters on Modern Architectures. In: Sakellariou, R., Gurd, J., Freeman, L., Keane, J. (eds) Euro-Par 2001 Parallel Processing. Euro-Par 2001. Lecture Notes in Computer Science, vol 2150. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44681-8_59
Download citation
DOI: https://doi.org/10.1007/3-540-44681-8_59
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-42495-6
Online ISBN: 978-3-540-44681-1
eBook Packages: Springer Book Archive