|
Despite its dominance, object-oriented computation has received scant
attention from the architecture community. We propose a novel memory
architecture that supports objects and garbage collection (GC). Our
architecture is co-designed with a Java Virtual Machine to improve the
functionality and efficiency of heap memory management. The architecture is
based on an address space for objects accessed using object IDs mapped by a
translator to physical addresses. To support this, the system includes
object-addressed caches, a hardware GC barrier to allow in-cache GC of
objects, and an exposed cache structure cooperatively managed by the JVM.
These extend a conventional architecture, without compromising
compatibility or performance for legacy binaries.
Our innovations enable various improvements such as: a novel technique for
parallel and concurrent garbage collection, without requiring any global
synchronization; an in-cache garbage collector, which never accesses main
memory; concurrent compaction of objects; and elimination of most GC store
barrier overhead. We compare the behavior of our system against that of a
conventional generational garbage collector, both with and without an
explicit allocate-incache operation. Explicit allocation eliminates many
write misses; our scheme additionally trades L2 misses for in-cache
operations, and provides the mapping indirection required for concurrent
compaction.
|