please refer to
Thank you!
There are generally two groups of technic in fighting non deterministic concurrency. The first one is surviving technic. Data race detection, atomic violation detection all fall into this group. They all assume that non deterministic execution is unavoidable, so they just develop technic to survive in such enviroment. The other one is avoiding technic. They actively eliminate the non deterministic executions or limit the concurrency in a tested scope.
[1] constraints the interleaving when execution to those already tested, encode the already tested correct interleaving into the program's binary code and make the execution within the tested run
Something like AVIO…
[2] assigns a token to each processor to order their memory access, thus make the whole execution deterministic. Share token incur about 38% degrade; transactional memory improve performance but is very complex. "The best tradeoff is shared token"
[3] detect execution invariant[also in 4,5,6]. Detect a local I instruction preceded by local P instruction is interleaved or not by a remote access. Run many times until the AI set stable.
[1] Jie Yu, Satish Narayanasamy. "A Case for an Interleaving Constrained Shared-Memory Multi-Processor" ISCA09.
[2] Joseph Devietti Brandon Lucia Luis Ceze Mark Oskin. "DMP: Deterministic Shared Memory Multiprocessing" ASPLOS’09.
[3] Shan Lu, Joseph Tucek, Feng Qin and Yuanyuan Zhou. AVIO: Detecting Atomicity Violations via Access Interleaving Invariants. ASPLOS'06
[4] M. Ernst, A. Czeisler, W. G. Griswold, and D. Notkin. Quickly detecting relevant program invariants. In ICSE, 2000
[5] S. Hangal and M. S. Lam. Tracking down software bugs using automatic anomaly detection. In ICSE, 2002.
[6] P. Zhou, W. Liu, F. Long, S. Lu, F. Qin, Y. Zhou, S. Midkiff, and J. Torrellas. AccMon: Automatically Detecting Memory-Related Bugs via Program Counter-based Invariants. In MICRO, 2004
阅读(493) | 评论(0) | 转发(0) |