{'fraction_non_alphanumeric': 0.014273719563392108, 'fraction_numerical': 0.0008396305625524769, 'mean_word_length': 5.622222222222222, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
A Language-Theoretic Approach to Specifying and Verifying Multiprocessor Cache Coherence Protocols

Computer architects have often used trace-driven simulations to evaluate the performance of new architectural features. However, the verification of these features often proves to be more difficult than their specification and implementation. This paper proposes a novel approach for extending the basic idea of trace-driven simulation to automatically verify a complex cache coherence protocol for large-scale multiprocessor systems. A formal model of the coherence protocol is specified as several human-readable text files which are automatically verified using the Mur ' formal verfication tool. A formal execution trace is extracted during the verification process and re-encoded to provide the input stimulus for a simulation of the actual implementation model, which is typically specified in a standard hardware description language. This approach provides a rigorous connection between the architectural specification and the verification of the low-level implementation. The feasibility of this approach is demonstrated by using it to verify the coherence protocol of the Cray SV2.