Abstract:
The Java memory model is very dicult for programmers to understand, and there are several ways of interpreting the memory model. In addition, like most programming languages that follow the shared memory parallel programming model, non-deterministic behaviors due to data races can also occur in Java concurrent programs. Data races and synchronization make it impossible to apply classical compiler optimization and analysis techniques directly to shared memory parallel programs because the classical methods do not account for updates to variables in threads other than the one being analyzed. The synergic eect of the non-intuitive Java memory model and the non-deterministic behavior makes it dicult for a programmer to write correct and ecientJava concurrent programs. We describe a compiler technique that hides an underlying relaxed memory consistency model by using Shasha and Snir's delay set analysis so that the compiler presents to the programmer an intuitive and natural memory model based on sequential consistency while performing the optimizations expected from a compiler. 1
Citations
| 801 | How to Make a Multiprocessor Computer that Correctly Executes Multiprocess Programs – Lamport - 1979 |
| 135 | Fixing the Java memory model – Pugh - 1999 |
| 111 | Efficient and Correct Execution of Parallel Programs that Share Memory – Shasha, Snir - 1988 |
| 65 | Adve and Kourosh Gharachorloo. Shared memory consistency models: A tutorial – Sarita - 1996 |
| 60 | Multiprocessors Should Support Simple Memory Consistency Models – Hill - 1998 |
| 26 | Concurrent static single assignment form and constant propagation for explicitly parallel programs – Lee, Midkiff, et al. - 1999 |
| 24 | Basic compiler algorithms for parallel programs – Lee, Padua, et al. - 1999 |
| 20 | Hiding relaxed memory consistency with compilers – Lee, Padua |
| 6 | A constant propagation algorithm for explicitly parallel programs – Lee, Midkiff, et al. - 1998 |

