ACM Home Page
Please provide us with feedback. Feedback
Virtual machine showdown: stack versus registers
Full text PdfPdf (215 KB)
Source ACM/Usenix International Conference On Virtual Execution Environments archive
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments table of contents
Chicago, IL, USA
SESSION: Language representations table of contents
Pages: 153 - 163  
Year of Publication: 2005
ISBN:1-59593-047-7
Authors
Yunhe Shi  University of Dublin, Trinity College, Dublin 2, Ireland
David Gregg  University of Dublin, Trinity College, Dublin 2, Ireland
Andrew Beatty  University of Dublin, Trinity College, Dublin 2, Ireland
M. Anton Ertl  TU Wien, Wien, Austria
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
SIGOPS: ACM Special Interest Group on Operating Systems
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 7,   Downloads (12 Months): 67,   Citation Count: 4
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1064979.1065001
What is a DOI?

ABSTRACT

Virtual machines (VMs) are commonly used to distribute programs in an architecture-neutral format, which can easily be interpreted or compiled. A long-running question in the design of VMs is whether stack architecture or register architecture can be implemented more efficiently with an interpreter. We extend existing work on comparing virtual stack and virtual register architectures in two ways. Firstly, our translation from stack to register code is much more sophisticated. The result is that we eliminate an average of more than 47% of executed VM instructions, with the register machine bytecode size only 25% larger than that of the corresponding stack bytecode. Secondly we present an implementation of a register machine in a fully standard-compliant implementation of the Java VM. We find that, on the Pentium 4, the register architecture requires an average of 32.3% less time to execute standard benchmarks if dispatch is performed using a C switch statement. Even if more efficient threaded dispatch is available (which requires labels as first class values), the reduction in running time is still approximately 26.5% for the register architecture.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
Spec release spec jvm98, first industry-standard benchmark for measuring java virtual machine performance. Press Release, page http://www.specbench.org/osg/jvm98/press.html, August 19 1998.
 
2
 
3
M. Bull, L. Smith, M. Westhead, D. Henty, and R. Davey. Benchmarking java grande application. In Second Ineternational Conference and Exhibtion on the Practical Application of Java. Manchester, UK, April 2000.
 
4
K. Casey, D. Gregg, M. A. Ertl, and A. Nisbet. Towards superinstructions for java interpeters. In Proceedings of the 7th International Workshoop on Software and Compilers for Embedded Systems (SCOPES 03), pages 329--343, September 2003.
5
6
 
7
 
8
L. George and A. W. Appel. Iterated register coalescing. Technical Report TR-498-95, Princeton University, Computer Science Department, Aug. 1995.
9
 
10
D. Gregg, A. Beatty, K. Casey, B. Davis, and A. Nisbet. The case for virtual register machines. Science of Computer Programming, Special Issue on Interpreters Virtual Machines and Emulators, 2005. To appear.
 
11
B. McGlashan and A. Bower. The interpreter is dead (slow). Isn't it? In OOPSLA'99 Workshop: Simplicity, Performance and Portability in Virtual Machine design., 1999.
12
 
13
J. Park and S. mook Moon. Optimistic register coalescing, Mar. 30 1999.
14
15
 
16


Collaborative Colleagues:
Yunhe Shi: colleagues
David Gregg: colleagues
Andrew Beatty: colleagues
M. Anton Ertl: colleagues