13.10.2014 Views

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1<br />

Chapter 1<br />

Introduction<br />

When Moore’s law [82] was originally published in 1965, it stated “The complexity for<br />

minimum component costs has increased at a rate of roughly a factor of two per year.<br />

Certainly over the short term this rate can be expected to continue, if not to increase.<br />

Over the longer term, the rate of increase is a bit more uncertain, although there is<br />

no reason to believe it will not remain nearly constant for at least 10 years.” In 1975,<br />

Moore revised his estimate to a doubling in complexity every two years [83]. Moore<br />

contends that he never said “every 18 months”. However, his law is commonly quoted<br />

as such, and continued to accurately reflect the rate of micro-processor development<br />

until 2002 [87].<br />

While increasing processor complexity at this rate has lead to incredible gains in<br />

processing power over the past four decades, developers’ and users’ appetite for this<br />

power has kept pace. Each improvement in technology has been met with demands<br />

for more features, the ability to solve larger problems and the ability for everything<br />

to happen faster, quickly utilizing all of the performance gains that were achieved.<br />

The Java programming language is packed with features that ease application<br />

development. It provides a syntax familiar to developers that have worked with<br />

earlier languages such as C and C++ while providing many additional features. These<br />

include an extensive object oriented library, safety checks that catch runtime errors<br />

in a graceful manner, a security model that allows users to safely execute code from<br />

unknown sources, and object-code level platform independence.<br />

While these features have reduced the burden of application development, they<br />

have increased the burden on the computer. Object oriented programs often consist<br />

of many small methods. Because Java provides polymorphism, the precise method to<br />

invoke must often be determined at runtime, increasing the number of operations that<br />

must be performed and inhibiting optimization. Runtime safety checks ensure that

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!