Abstract
Ability to replay a program's execution on a multi-processor system can significantly help parallel programming. To replay a shared-memory multi-threaded program, existing solutions record its program input (I/O, DMA, etc.) and the shared-memory dependencies between threads. Prior processor based record-and-replay solutions are efficient, but they require non-trivial modifications to the coherency protocol and the memory sub-system for recording the shared-memory dependencies. In this paper, we propose a processor-based record-andreplay solution that does not require detecting and logging shared-memory dependencies to enable multi-processor execution replay. We show that a load-based checkpointing scheme, which was originally proposed for just recording program input, is also sufficient for replaying every thread in a multi-threaded program. Shared-memory dependencies between threads are reconstructed offline, during replay, using an algorithm based on an SMT solver. In addition to saving log space, the proposed solution significantly reduces the complexity of hardware support required for enabling replay.
| Original language | English |
|---|---|
| Pages (from-to) | 564-575 |
| Number of pages | 12 |
| Journal | Proceedings of the Annual International Symposium on Microarchitecture, MICRO |
| DOIs | |
| State | Published - 2009 |
| Event | 42nd Annual IEEE/ACM International Symposium on Microarchitecture, Micro-42 - New York, NY, United States Duration: 12 Dec 2009 → 16 Dec 2009 |
Keywords
- Multi-processor replay
- Shared-memory dependencies
- SMT solver