TY - GEN
T1 - Eliminating read barriers through procrastination and cleanliness
AU - Sivaramakrishnan, K. C.
AU - Ziarek, Lukasz
AU - Jagannathan, Suresh
PY - 2012
Y1 - 2012
N2 - Managed languages typically use read barriers to interpret forwarding pointers introduced to keep track of copied objects. For example, in a multicore environment with thread-local heaps and a global, shared heap, an object initially allocated on a local heap may be copied to a shared heap if it becomes the source of a store operation whose target location resides on the shared heap. As part of the copy operation, a forwarding pointer may be established in the original object to point to the copied object. This level of indirection avoids the need to update all of the references to the object that has been copied. In this paper, we consider the design of a managed runtime that eliminates read barriers. Our design is premised on the availability of a sufficient degree of concurrency to stall operations that would otherwise necessitate the copy. Stalled actions are deferred until the next local collection, avoiding exposing forwarding pointers to the mutator. In certain important cases, procrastination is unnecessary - lightweight runtime techniques can sometimes be used to allow objects to be eagerly copied when their set of incoming references is known, or when it can be determined that having multiple copies would not violate program semantics. We evaluate our techniques on 3 platforms: a 16-core AMD64 machine, a 48-core Intel SCC, and an 864-core Azul Vega 3. Experimental results over a range of parallel benchmarks indicate that our approach leads to notable performance gains (20 - 32% on average) without incurring any additional complexity.
AB - Managed languages typically use read barriers to interpret forwarding pointers introduced to keep track of copied objects. For example, in a multicore environment with thread-local heaps and a global, shared heap, an object initially allocated on a local heap may be copied to a shared heap if it becomes the source of a store operation whose target location resides on the shared heap. As part of the copy operation, a forwarding pointer may be established in the original object to point to the copied object. This level of indirection avoids the need to update all of the references to the object that has been copied. In this paper, we consider the design of a managed runtime that eliminates read barriers. Our design is premised on the availability of a sufficient degree of concurrency to stall operations that would otherwise necessitate the copy. Stalled actions are deferred until the next local collection, avoiding exposing forwarding pointers to the mutator. In certain important cases, procrastination is unnecessary - lightweight runtime techniques can sometimes be used to allow objects to be eagerly copied when their set of incoming references is known, or when it can be determined that having multiple copies would not violate program semantics. We evaluate our techniques on 3 platforms: a 16-core AMD64 machine, a 48-core Intel SCC, and an 864-core Azul Vega 3. Experimental results over a range of parallel benchmarks indicate that our approach leads to notable performance gains (20 - 32% on average) without incurring any additional complexity.
KW - Barrier elimination
KW - Cleanliness
KW - Concurrent programming
KW - Functional languages Copyright
KW - Parallel and concurrent collection
KW - Private heaps
UR - https://www.scopus.com/pages/publications/84863918382
U2 - 10.1145/2258996.2259005
DO - 10.1145/2258996.2259005
M3 - Conference contribution
AN - SCOPUS:84863918382
SN - 9781450313506
T3 - International Symposium on Memory Management, ISMM
SP - 49
EP - 60
BT - ISMM 2012 - Proceedings of the 2012 ACM SIGPLAN International Symposium on Memory Management
T2 - 2012 ACM SIGPLAN International Symposium on Memory Management, ISMM 2012
Y2 - 15 June 2012 through 16 June 2012
ER -