Speculation for Parallelizing Runtime Checks
Martin Süßkraut and Stefan Weigert and Ute Schiffel and Thomas Knauth and Martin Nowack and Diogo Becker de Brum and Christof Fetzer
Appeared in: Proceedings of the 11th International Symposium on Stabilization, Safety, and Security of Distributed Systems (SSS 2009)
Date: 2009

Download: PRESENTATION SLIDES
Download: BIBTEX (suesskraut2009sss)
External Reference: LINK
We present and evaluate a framework, ParExC, to reduce the runtime penalties of compiler generated runtime checks. An obvious approach is to use idle cores of modern multi-core CPUs to parallelize the runtime checks. This could be accomplished by (a) parallelizing the application and in this way, implicitly parallelizing the checks, or (b) by parallelizing the checks only. Parallelizing an application is rarely easy and frameworks that simplify the parallelization, e.g., like software transactional memory (STM), can introduce considerable overhead. ParExC is based on alternative (b). We compare it with an approach using a transactional memory-based alternative. Our experience shows that ParExC is not only more efficient than the STM-based solution but the manual effort for an application developer to integrate ParExC is lower. ParExC has - in contrast to similar frameworks - two noteworthy features that permit a more efficient parallelization of checks: (1) speculative variables, and (2) the ability to add checks by static instrumentation.