When are Bytecodes Faster than Direct Execution?

نویسندگان

  • James K. Doyle
  • J. Eliot B. Moss
  • Antony L. Hosking
چکیده

We demonstrate the tradeoffs between interpreting code in compact forms (such as the bytecoded method formats used in Smalltalk and Java), and direct execution of code (as in dynamic-translation Smalltalk and just-in-time Java compilers). Experiments with the interpreted Smalltalk language show that the widely held belief that direct execution is always faster than compact interpretation is not correct. Specifically, it is untrue for memory architectures with high cache-miss penalties, where the larger volume of less frequently repeated instructions inherent in direct execution outweighs the reduction in the number of instructions executed. The experiments presented demonstrate that the space of cycle costs for different types of cache misses can be divided into regions where a particular option is faster, and that these regions differ for different cache configurations. This suggests that interpreter designers must consider memory architecture and language characteristics when deciding whether to use direct execution. This work has been supported in part by gifts from Sun Microsystems Laboratories. †Submission contact: Eliot Moss, Phone: (413) 545-4206, Fax: (413) 545-1249

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Accelerating the parallel distributed execution of Java HPC applications

In order to speed up the execution of Java applications, JIT compilers compile method bytecodes into native code at run time. Once a method is compiled, subsequent executions of this method will run a generated machine-dependent code, which is generally faster than interpreting bytecodes. In addition, JIT compilers can apply several optimizations to the code to increase the performance even fur...

متن کامل

A quantitative analysis of the performance impact of specialized bytecodes in java

Java is implemented by 201 bytecodes that serve the same purpose as assembler instructions while providing object-file platform independence. A collection of core bytecodes provide critical and independent functionality while a collection of specialized bytecodes is meant to improve on the performance of some of the core bytecodes. This study identifies 67 specialized bytecodes and shows the im...

متن کامل

Hardware compilation for high performance Java processors

High performance on Java applications running on server and desktop machines requires fast execution of Java bytecodes. Such performance can be achieved by Just-In-Time (JIT) compilers, which translate the stack-based bytecodes into register-based machine code on demand. But one crucial problem in Java JIT compilation is the compilation time, which increases the total execution time of an appli...

متن کامل

A Verifier for Region-Annotated Java Bytecodes

This paper presents a verifier for the memory-safe execution of extended Java bytecodes that support region-based memory management and explicit deallocation primitives. The verifier reads in region-annotated bytecodes that augment the standard Java bytecodes with instructions for creating and removing memory regions, allocating objects in regions, and passing regions as parameters. The verific...

متن کامل

A software/hardware cooperated stack operations folding model for Java processors

Java has become the most important language in the Internet area, but the execution performance of Java processors is severely limited by the true data dependency inherited from the stack architecture defined by Sun’s Java Virtual Machine. A sequential hardware-based folding algorithm––POC folding model was proposed in the earlier research to eliminate up to 80.1% of stack push and pop bytecode...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 1997