Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Civl] Cache coherence protocol #988

Merged
merged 7 commits into from
Nov 22, 2024
Merged

[Civl] Cache coherence protocol #988

merged 7 commits into from
Nov 22, 2024

Conversation

shazqadeer
Copy link
Contributor

@shazqadeer shazqadeer commented Nov 22, 2024

PR contributions:

  • Civl construction of a directory-based cache MESI coherence protocol
  • Small bug fix in parser

Many important details of the cache coherence protocol are modeled.

  • Individual steps taken by the cache and directory controllers are fine-grained.
  • Operations on the cache controller are non-blocking.
  • Multiple memory addresses mapping to the same cache address is modeled.
  • Eviction of cache lines is modeled.

Although the overall structure of the code was worked out before implementation started, several bugs in the implementation were cleaned up because of the inability to construct a proof.

  • Writes must be disallowed if an eviction is in progress.
  • The memory address in the cache line must be set by the cache controller prior to sending the read request to the directory.

The most challenging parts of the proof were the argument that the shared snoop request and the responses to evict and read requests are all left movers. Contrary to earlier intuition that the shared snoop is a right mover, we discovered that instead it is a left mover.

@shazqadeer shazqadeer merged commit 7a74d2a into master Nov 22, 2024
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant