Mixing Hardware and Software Reversibility for Speculative Parallel Discrete Event Simulation

Davide Cingolani, Mauro Ianni, Alessandro Pellegrini, and Francesco Quaglia

Published in: Proceedings of the 8th Conference on Reversible Computation
pdf Download PDF

Speculative parallel discrete event simulation requires a support for reversing processed events, also called state recovery, when causal inconsistencies are revealed. In this article we present an approach where state recovery relies on a mix of hardware- and software-based techniques. We exploit the Hardware Transactional Memory (HTM) support, as offered by Intel Haswell CPUs, to process events as in-memory transactions, which are possibly committed only after their causal consistency is verified. At the same time, we exploit an innovative software-based reversibility technique, fully relying on transparent software instrumentation targeting x86/ELF objects, which enables undoing side effects by events with no actual backward re-computation. Each thread within our speculative processing engine dynamically (on a per-event basis) selects which recovery mode to rely on (hardware vs software) depending on varying runtime dynamics. The latter are captured by a lightweight analytic model indicating to what extent the HTM support (not paying any instrumentation cost) is efficient, and after what level of events’ parallelism it starts degrading its performance, e.g., due to excessive data conflicts while manipulating causality meta-data within HTM-based transactions. We released our implementation as open source software and provide experimental results for an assessment of its effectiveness.

BibTeX Entry:

author = {Cingolani, Davide and Ianni, Mauro and Pellegrini, Alessandro and Quaglia, Francesco},
booktitle = {Proceedings of the 8th Conference on Reversible Computation},
title = {Mixing Hardware and Software Reversibility for Speculative Parallel Discrete Event Simulation},
year = {2016},
month = jul,
pages = {137--152},
publisher = {Springer-Verlag},
series = {RC},
doi = {10.1007/978-3-319-40578-0_9},
location = {Bologna, Italy}