Fast complete memory consistency verification

The verification of an execution against memory consistency is known to be NP-hard. This paper proposes a novel fast memory consistency verification method by identifying a new natural partial order: time order. In multiprocessor systems with store atomicity, a time order restriction exists between two operations whose pending periods are disjoint: the former operation in time order must be observed by the latter operation. Based on the time order restriction, memory consistency verification is localized: for any operation, both inferring related orders and checking related cycles need to take into account only a bounded number of operations. Our method has been implemented in a memory consistency verification tool for CMP (Chip Multi Processor), named LCHECK. The time complexity of the algorithm in LCHECK is O(Cpp2n2) (where C is a constant, p is the number of processors and n is the number of operations) for soundly and completely checking, and O(p3n) for soundly but incompletely checking. LCHECK has been integrated into both pre and post silicon verification platforms of the Godson-3 microprocessor, and many bugs of memory consistency and cache coherence were found with the help of LCHECK.

[1]  Jason Baumgartner,et al.  Functional verification of the POWER4 microprocessor and POWER4 multiprocessor system , 2002, IBM J. Res. Dev..

[2]  Amitabha Roy,et al.  Fast and Generalized Polynomial Time Memory Consistency Verification , 2006, CAV.

[3]  Mark D. Hill,et al.  Lamport clocks: verifying a directory cache-coherence protocol , 1998, SPAA '98.

[4]  David L. Dill,et al.  An executable specification, analyzer and verifier for RMO (relaxed memory order) , 1995, SPAA '95.

[5]  Erik Hagersten,et al.  Race-free interconnection networks and multiprocessor consistency , 1991, [1991] Proceedings. The 18th Annual International Symposium on Computer Architecture.

[6]  Phillip B. Gibbons,et al.  Testing Shared Memories , 1997, SIAM J. Comput..

[7]  Yue Yang,et al.  Nemos: a framework for axiomatic and executable specifications of memory consistency models , 2004, 18th International Parallel and Distributed Processing Symposium, 2004. Proceedings..

[8]  Michel Dubois,et al.  Correct memory operation of cache-based multiprocessors , 1987, ISCA '87.

[9]  Albert Meixner,et al.  Dynamic verification of sequential consistency , 2005, 32nd International Symposium on Computer Architecture (ISCA'05).

[10]  Ganesh Gopalakrishnan,et al.  Shared Memory Consistency Protocol Verification Against Weak Memory Models: Refinement via Model-Checking , 2002, CAV.

[11]  Mikko H. Lipasti,et al.  The complexity of verifying memory coherence and consistency , 2005, IEEE Transactions on Parallel and Distributed Systems.

[12]  Phillip B. Gibbons,et al.  On testing cache-coherent shared memories , 1994, SPAA '94.

[13]  Sudheendra Hangal,et al.  Efficient algorithms for verifying memory consistency , 2005, SPAA '05.

[14]  Martin Collier,et al.  Transparent and scalable client-side server selection using Netlets , 2003, 2003 IEEE Conference onOpen Architectures and Network Programming..

[15]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[16]  Yue Yang,et al.  QB or Not QB: An Efficient Execution Verification Tool for Memory Orderings , 2004, CAV.

[17]  Weisong Shi,et al.  A framework of memory consistency models , 2008, Journal of Computer Science and Technology.

[18]  Mikko H. Lipasti,et al.  Verifying sequential consistency using vector clocks , 2002, SPAA '02.

[19]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[20]  Jian Wang,et al.  Godson-3: A Scalable Multicore RISC Processor with x86 Emulation , 2009, IEEE Micro.

[21]  Weiwu Hu,et al.  Out-of-order execution in sequentially consistent shared-memory systems: Theory and experiments , 2008, Journal of Computer Science and Technology.

[22]  Anoop Gupta,et al.  Memory consistency and event ordering in scalable shared-memory multiprocessors , 1990, [1990] Proceedings. The 17th Annual International Symposium on Computer Architecture.

[23]  Mikko H. Lipasti,et al.  The complexity of verifying memory coherence , 2003, SPAA '03.

[24]  Sridhar Narayanan,et al.  TSOtool: a program for verifying memory systems using the memory consistency model , 2004, Proceedings. 31st Annual International Symposium on Computer Architecture, 2004..

[25]  John M. Ludden,et al.  Functional verification of the POWER5 microprocessor and POWER5 multiprocessor systems , 2005, IBM J. Res. Dev..

[26]  Arvind,et al.  Memory Model = Instruction Reordering + Store Atomicity , 2006, 33rd International Symposium on Computer Architecture (ISCA'06).

[27]  Michel Dubois,et al.  Memory access buffering in multiprocessors , 1998, ISCA '98.

[28]  James R. Goodman,et al.  Cache Consistency and Sequential Consistency , 1991 .

[29]  Albert Meixner,et al.  Dynamic Verification of Memory Consistency in Cache-Coherent Multithreaded Computer Architectures , 2006, International Conference on Dependable Systems and Networks (DSN'06).

[30]  Anoop Gupta,et al.  Memory consistency and event ordering in scalable shared-memory multiprocessors , 1990, ISCA '90.

[31]  Sudheendra Hangal,et al.  Completely verifying memory consistency of test program executions , 2006, The Twelfth International Symposium on High-Performance Computer Architecture, 2006..

[32]  William W. Collier,et al.  Reasoning about parallel architectures , 1992 .

[33]  Yuanyuan Zhou,et al.  AVIO: Detecting Atomicity Violations via Access-Interleaving Invariants , 2007, IEEE Micro.

[34]  Patrick Valduriez Shared-Memory Architecture , 2009, Encyclopedia of Database Systems.