|
[ Publications ]
[ Research Opportunities ]
[ Partners & Supporters ]
[ Earlier Work ]
|
|
Compiler-Based Object Consistency (Preliminary Version)
|
| Christoph von Praun,
Thomas Gross,
Compiler-Based Object Consistency (Preliminary Version), Workshop on Caching, Coherence and Consistency (WC3 2001), June 2001.
[WC3_2001.pdf
WC3_2001.ps
WC3_2001.ps.gz]
|
|
An application developer rarely interacts with the memory model
provided by the bare machine; instead, the model that is created by
layering compiler and runtime system over the hardware determines the
abstraction for the programmer. Sequential Consistency (SC) is a
fundamental memory model for multi-threaded environments. In an
object-oriented environment, the notion of consistency extends beyond
individual memory locations: Object Consistency (OC) mandates that
no intermediary state created during method execution becomes visible,
i.e., operations on objects are locally serializable.
In existing systems, optimizations of memory access operations by the
compiler and the hardware implementation (like reordering or
out-of-order execution) wreack havoc with SC and thus also with OC.
This paper describes a solution that provides OC to the programmer
while allowing traditional compiler transformations when executing on
realistic machines.
The key idea is to separate the aspects of control-flow and memory
synchronizations shifting the responsibility to maintain memory and
Object Consistency from the programmer to the compiler and (language)
runtime system. The integrated system maintains dynamic consistency
domains for each thread and synchronizes memory whenever the domain is
enlarged or reduced. In addition, accesses violating OC are
detected. Since executions always experience a SC memory view, such
parallel programs are platform-independent.
The paper contains a preliminary evaluation based on Java,
demonstrating that compile-time analysis for typical programs unveils
sufficient information about concurrency; this information helps to
significantly reduce the amount of memory synchronization and access
checking necessary for providing OC.
|
|
[ Publications ]
[ Research Opportunities ]
[ Partners & Supporters ]
[ Earlier Work ]
|
|