|
Abstract:
|
The programming language and underlying hardware determine application
performance , and both are undergoing revolutionary shifts . As
applications have become more sophisticated and capable , programmers
have chosen managed languages in many domains for ease of development .
These languages abstract memory management from the programmer , which
can introduce time and space overhead but also provide opportunities
for dynamic optimization . Optimizing memory performance is in part
paramount because hardware is reaching physical limits . Recent trends
towards chip multiprocessor machines exacerbate the memory system
bottleneck because they are adding cores without adding commensurate
bandwidth . Both language and architecture trends add stress to the
memory system and degrade application performance .
This dissertation exploits the language abstraction to analyze and
optimize memory efficiency on emerging hardware . We study the sources
of memory inefficiencies on two levels : heap data and hardware storage
traffic . We design and implement optimizations that change the heap
layout of arrays , and use program semantics to eliminate useless
memory traffic . These techniques improve memory system efficiency and
performance .
We first quantitatively characterize the problem by comparing many
data compression algorithms and their combinations in a limit study of
Java benchmarks . We find that arrays are a dominant source of heap
inefficiency . We introduce z -rays , a new array layout design , to
bridge the gap between fast access , space efficiency and
predictability . Z -rays facilitate compression and offer flexibility ,
and time and space efficiency .
We find that there is a semantic mismatch between managed languages ,
with their rapid allocation rates , and current hardware , causing
unnecessary and excessive traffic in the memory subsystem . We take
advantage of the garbage collector's identification of dead data
regions , communicating information to the caches to eliminate useless
traffic to memory . By reducing traffic and bandwidth , we improve
performance .
We show that the memory abstraction in managed languages is not just a
cost to be borne , but an opportunity to alleviate the memory
bottleneck . This thesis shows how to exploit this abstraction to
improve space and time efficiency and overcome the memory wall . We
enhance the productivity and performance of ubiquitous managed
languages on current and future architectures . |