Identifying Processor Bottlenecks in Virtual Machine Based Execution of Java Bytecode

Pradeep RAO  Kazuaki MURAKAMI  

IEICE TRANSACTIONS on Electronics   Vol.E92-C   No.10   pp.1265-1275
Publication Date: 2009/10/01
Online ISSN: 1745-1353
DOI: 10.1587/transele.E92.C.1265
Print ISSN: 0916-8516
Type of Manuscript: Special Section PAPER (Special Section on Hardware and Software Technologies on Advanced Microprocessors)
processor microarchitecture,  Java virtual machine,  performance bottlenecks,  empirical models,  

Full Text: PDF(213.1KB)>>
Buy this Article

Despite the prevalence of Java workloads across a variety of processor architectures, there is very little published data on the impact of the various processor design decisions on Java performance. We attribute the lack of data to the large design space resulting from the complexity of the modern superscalar processor and the additional complexities associated with executing Java bytecode using a virtual machine. To address this shortcoming, we use a statistically rigorous methodology to systematically quantify the the impact of the various processor microarchitecture parameters on Java execution performance. The adopted methodology enables efficient screening of significant factor effects in a large design space consisting of 35 factors (32-billion potential configurations) using merely 72 observations per benchmark application. We quantify and tabulate the significance of each of the 35 factors for 13 benchmark applications. While these tables provide various insights into Java performance, they consistently highlight the performance significance of the instruction delivery mechanism, especially the instruction cache and the ITLB design parameters. Furthermore, these tables enable the architect to identify processor bottlenecks for Java workloads by providing an estimate of the relative impact of various design decisions.