Mending Fences with Self-Invalidation and Self-Downgrade
Parosh Aziz Abdulla, Mohamed Faouzi Atig, Stefanos Kaxiras, Carl, Leonardsson, Alberto Ros, Yunyun Zhu

TL;DR
This paper introduces a formal model and analysis method for cache coherence protocols based on self-invalidation and self-downgrade, enabling optimal fence insertion to ensure program correctness and improve performance.
Contribution
It presents a novel formal model, a reachability analysis algorithm, and a counter-example guided fence insertion method for protocols with diverse fences, addressing correctness and optimization.
Findings
The method effectively checks program safety under self-invalidation/downgrade protocols.
Optimal fence insertion ensures program correctness with minimal cost.
Prototype implementation demonstrates practical effectiveness on various benchmarks.
Abstract
Cache coherence protocols based on self-invalidation and self-downgrade have recently seen increased popularity due to their simplicity, potential performance efficiency, and low energy consumption. However, such protocols result in memory instruction reordering, thus causing extra program behaviors that are often not intended by the programmers. We propose a novel formal model that captures the semantics of programs running under such protocols, and features a set of fences that interact with the coherence layer. Using the model, we design an algorithm to analyze the reachability and check whether a program satisfies a given safety property with the current set of fences. We describe a method for insertion of optimal sets of fences that ensure correctness of the program under such protocols. The method relies on a counter-example guided fence insertion procedure. One feature of our…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
