Abstract
Speculative execution is an important technique that has historically been used to extract concurrency from sequential programs. While techniques to support speculation work well when computations perform relatively simple actions (e.g., reads and writes to known locations), understanding speculation for multi-threaded programs in which threads may communicate and synchronize through multiple shared references is significantly more challenging, and is the focus of this paper.
We use as our reference point a simple higher-order concurrent language extended with an n-way barrier and a fork/join execution model. Our technique permits the expression guarded by the barrier to speculatively proceed before the barrier has been satisfied (i.e., before all threads that synchronize on that barrier have done so) and to have participating threads that would normally block on the barrier to speculatively proceed as well. Our solution formulates safety properties under which speculation is correct in a fork/join model, and per-synchronization basis.
Recommendations
Speculative N-Way barriers
DAMP '09: Proceedings of the 4th workshop on Declarative aspects of multicore programmingSpeculative execution is an important technique that has historically been used to extract concurrency from sequential programs. While techniques to support speculation work well when computations perform relatively simple actions (e.g., reads and ...
Speculative lock elision: enabling highly concurrent multithreaded execution
MICRO 34: Proceedings of the 34th annual ACM/IEEE international symposium on MicroarchitectureSerialization of threads due to critical sections is a fundamental bottleneck to achieving high performance in multithreaded programs. Dynamically, such serialization may be unnecessary because these critical sections could have safely executed ...
Speculative synchronization: applying thread-level speculation to explicitly parallel applications
ASPLOS X: Proceedings of the 10th international conference on Architectural support for programming languages and operating systemsBarriers, locks, and flags are synchronizing operations widely used programmers and parallelizing compilers to produce race-free parallel programs. Often times, these operations are placed suboptimally, either because of conservative assumptions about ...






Comments