Optimizing the Read and Write Barriers for Orthogonal Persistence

Antony L. Hosking, Nathaniel Nystrom, Quintin Cutts, Kumar Brahnmath

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

Abstract

Persistent programming languages manage volatile memory as a cache for stable storage, imposing a read barrier on operations that access the cache, and a write barrier on updates to the cache. The read barrier checks the cache residency of the target object while the write barrier marks the target as dirty in the cache to support a write-back policy that defers updates to stable storage until eviction or stabilization. These barriers may also subsume additional functionality, such as negotiation of locks on shared objects to support concurrency control. Compilers for persistent programming languages generate barrier code to protect all
accesses to possibly persistent objects. Orthogonal persistence imposes this cost on every object access, since all objects are potentially persistent, at significant overhead to execution. We have designed a new suite of compiler optimizations, focusing on partial redundancy elimination of pointer-based access expressions, that significantly reduce this impact. These are implemented in an analysis and optimization framework for Java bytecodes, in support of orthogonal persistence for Java. In experiments with the traversal portions of the OO7 benchmark suite our optimizations reduce the number of read and write barriers executed by an average of 83% and 25%, respectively.
Original languageEnglish
Title of host publicationAdvances in Persistent Object Systems
Subtitle of host publicationPOS-8 and PJAVA-3
EditorsRon Morrison, Mick Jordan, Malcolm Atkinson
PublisherMorgan Kauffman Publishers
Pages149-159
ISBN (Print)1-55860-585-1
Publication statusPublished - 1998
Externally publishedYes

Fingerprint

Dive into the research topics of 'Optimizing the Read and Write Barriers for Orthogonal Persistence'. Together they form a unique fingerprint.

Cite this