Parallel assertion processing using memory snapshots

J. H. Siddiqui, M. F. Iqbal, and D. Chiou
Workshop on Unique Chips and Systems (UCAS 2009)


Assertions are valuable in producing quality soft- ware but some assertions like those checking data structure invariants are costly by nature. The authors of this paper propose that costly assertions be queued up for later execution by a free processor. The state of data is preserved using a memory snapshot. Such a scheme will extract further parallelism from a given application and improve its speed up on a parallel machine. Three schemes for end user programs to use memory snapshots are discussed. One is based on memory mapping like mmap. Second scheme uses unused virtual address space bits for snapshot identifier. The third scheme uses a software library. Merits and demerits of user interface schemes are identified. Three methods for backend implementation of memory snap- shots are discussed. One is based on physical address space versioning. It proposes modifications to memory controller in a way similar to transactional memory. It goes on to introduce a snapshot aware cache coherence protocol. The second method is based on virtual address space versioning and suggests kernel modifications. The last method is totally supported in a user library. Advantages and disadvantages of different implementa- tions are compared. Evaluation is not extensive, given the large matrix of im- plementation possibilities. However basic memory controller snapshot capability is implemented in M5 simulator. Additionally, a software library approach is implemented. Most valuable results of this evaluation are the pros and cons of various approaches discussed. The feasibility study of various imple- mentation schemes is also an important groundwork for future research on memory snapshots. Based on these experiments, the authors believe that memory snapshot capability is a powerful tool that allows parallelism where it is not natural without such a capability.
(UCAS 2009), Boston, MA, April 2009


@inproceedings { ucas2009,
author = { }, }